# inputEx-library

### inputEx 0.5.1

inputEx-library > inputEx > MultiSelectFieldCustom.js (source view)
Search:
Filters Show Private Show Protected Show Deprecated

    (function() {

    	var inputEx = YAHOO.inputEx;

      /**
     * Create a multi Select field customized
     * @class inputEx.MultiSelectFieldCustom
     * @extends inputEx.MultiSelectField
     * @constructor
     * @param {Object} options Added options:
     * <ul>
     *	  <li>maxItems: the number of Items</li>
     *	  <li>maxItemsAlert: a function executed when the maxItems is reach</li>
     *	  <li>listSelectOptions : the options for a select field inside of the custom list</li>
     * </ul>
     */

    inputEx.MultiSelectFieldCustom = function(options) {
    	this.options = this.options || {};
      this.listSelectOptions= options.listSelectOptions;
      this.maxItems = options.maxItems;
      this.maxItemsAlert = options.maxItemsAlert;
    	inputEx.MultiSelectFieldCustom.superclass.constructor.call(this,options);

    };
    YAHOO.lang.extend(inputEx.MultiSelectFieldCustom, inputEx.MultiSelectField,{
       /**
        * renderComponent : override the MultiSelectField renderComponent function
        * <ul>
        *   <li>Use the custom ddlist </li>
        *   <li>put options for select fields in the ddList Custom</li>
        * </ul>
        */

       renderComponent: function() {
          inputEx.MultiSelectField.superclass.renderComponent.call(this);

          this.ddlist = new inputEx.widget.ListCustom({parentEl: this.fieldContainer,listSelectOptions: this.listSelectOptions, maxItems: this.maxItems, maxItemsAlert: this.maxItemsAlert });

       },
       onItemRemoved: function(e,params) {
          var itemValue = params[0];
          var index = inputEx.indexOf(itemValue.value || itemValue, this.options.selectValues);
          this.el.childNodes[index].disabled = false;
          this.fireUpdatedEvt();
       },
       setValue: function(obj, sendUpdatedEvt) {

          this.ddlist.setValue(obj);

          // Re-enable all options
          for(var i = 0 ; i < this.el.childNodes.length ; i++) {
             this.el.childNodes[i].disabled = false;
          }
          // disable selected options
          for(i = 0 ; i < obj.length ; i++) {
             var index = inputEx.indexOf(obj[i].value || obj[i], this.options.selectValues);
             this.el.childNodes[index].disabled = true;
          }

    	   if(sendUpdatedEvt !== false) {
    	      // fire update event
             this.fireUpdatedEvt();
          }
    	},
    	addItem: function(item) {
          this.el.selectedIndex = item.getId()+1;

          this.onAddNewItem();
       },

    });

    })();

Copyright © 2010 Eric Abouaf All rights reserved.