Падащото меню MultiSelect не показва избраната опция?

Така че използвам приспособлението за множествен избор от тук: http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/ и работи добре в този случай. Когато използвам абсолютно същия стил на падащо меню (за да изглежда последователно) с нормално (изберете само 1 опция) падащо меню, проблемът ми е, че падащото меню казва 1 избрано. Трябва да променя това, за да покажа избраната опция, така че „Червено“ от Червено, Жълто, Синьо. Кодът, който определя текста на избраната опция, е както следва:

  $.widget("ech.multiselect", {

    // default options
    options: {
      header: true,
      height: 175,
      minWidth: 225,
      classes: '',
      checkAllText: 'Check all',
      uncheckAllText: 'Uncheck all',
      noneSelectedText: 'Select options',
      selectedText: '# selected',
      selectedList: 0,
      show: null,
      hide: null,
      autoOpen: false,
      multiple: true,
      position: {},
      appendTo: "body"
    }

И така, имам нужда от selectedText, за да покажа избраната опция, ако падащото меню има клас .normal. Някакви идеи? Благодаря предварително.


person triplethreat77    schedule 19.09.2013    source източник
comment
Кодът по-горе не задава стойността. Трябва да замените функцията за актуализиране.   -  person Rajesh Dhiman    schedule 19.09.2013
comment
Аз разбирам, че. Как мога да го променя така, че да получава динамично текста на опцията, вместо да го кодира твърдо?   -  person triplethreat77    schedule 19.09.2013
comment
$(.stylized).multiselect({ //selectedText:false header:false, multiple: false, minWidth: 80, selectedText: 'Select...', });   -  person triplethreat77    schedule 19.09.2013
comment
Можете да направите това, но какво ще стане, ако има повече от един избран елемент, как искате да ги покажете?   -  person Rajesh Dhiman    schedule 19.09.2013
comment
Ако са избрани повече от един, добре е да останете като # избрани. Просто съм загрижен за падащите менюта с избор на една опция.   -  person triplethreat77    schedule 19.09.2013


Отговори (2)


Трябва да промените част от кода във файла jquery.multiselect.js. Заменете функцията за актуализиране с този код:

// updates the button text. call refresh() to rebuild
    update: function() {
      var o = this.options;
      var $inputs = this.inputs;
      var $checked = $inputs.filter(':checked');
      var numChecked = $checked.length;
      var value;

      if(numChecked === 0) {
        value = o.noneSelectedText;
      } else if( numChecked===1){
    value = $checked.val();
} else {
        if($.isFunction(o.selectedText)) {
          value = o.selectedText.call(this, numChecked, $inputs.length, $checked.get());
        } else if(/\d/.test(o.selectedList) && o.selectedList > 0 && numChecked <= o.selectedList) {
          value = $checked.map(function() { return $(this).next().html(); }).get().join(', ');
        } else {
          value = o.selectedText.replace('#', numChecked).replace('#', $inputs.length);
        }
      }

      this._setButtonValue(value);

      return value;
    },

Не съм тествал това, но кажете дали работи за вас.

person Rajesh Dhiman    schedule 20.09.2013
comment
перфектен Точно това ми трябваше. Благодаря ти. - person triplethreat77; 20.09.2013

Имам същия проблем и използвам javascript 1.7.2

Проблемът е, че избраният текст се взема предвид само при първото зареждане и когато променя квадратчето за отметка, избраният текст на моя бутон не се променя. Накрая успявам да поправя проблема, като модифицирам jquery.multiselect.js по този начин:

В _create: функция ()

Редактирайте етикета на бутона на:

buttonlabel = (this.buttonlabel = $('')) .html(o.noneSelectedText) .appendTo(button) .attr("id", "buttonlabel_" + this.element.attr('id')),

В актуализация: функция ()

Променете this.buttonlabel.html( value ) на $("#buttonlabel_" + this.element.attr("id")).text(value);

Надявам се това да помогне.

наздраве

person r a    schedule 30.10.2013