2013-09-19 4 views
0

Таким образом, я использую виджет с несколькими видами: http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/, и он отлично работает в этом случае. Когда я использую строго один и тот же стиль выпадающего списка (чтобы он выглядел последовательным) с нормальным (только выберите вариант 1), проблема заключается в том, что в раскрывающемся списке указано «Выбранный». Мне нужно изменить это, чтобы отобразить выбранный вариант, поэтому «Красный» из красного, желтого, синего. Код, который определяет выбранный вариант текста заключается в следующем:Виджет раскрывающегося списка MultiSelect не отображает выбранную опцию?

$.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. Есть идеи? Заранее спасибо.

+0

В приведенном выше коде не задано значение. Вам необходимо переопределить функцию обновления. –

+0

Я понимаю это. Как я могу изменить его, чтобы динамически подбирать текст опциона, а не его hardcoding? – triplethreat77

+0

$ ("стилизованы.") MultiSelect ({ \t \t \t \t // selectedText:. Ложный \t \t \t \t Заголовок: ложь, \t \t \t \t многообразны: ложь, \t \t \t \t MinWidth: 80, \t \t \t \t selectedText: 'Select ...', \t \t}); – triplethreat77

ответ

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; 
    }, 

Я не проверял это, но сказать, если он работает для вас.

+1

Perfect. Это именно то, что мне нужно.Спасибо. – triplethreat77

0

У меня такая же проблема, и им с помощью JavaScript 1.7.2

Проблема заключается в selectedText принимается во внимание только в первый раз загрузка и когда я изменить флажок, slectedText моей кнопки не меняется. Наконец, я смог решить эту проблему путем изменения jquery.multiselect.js так:

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

Редактировать BUTTONLABEL к:

BUTTONLABEL = (this.buttonlabel = $ ('')) .html (o.noneSelectedText) .appendTo (кнопка) .attr ("ID", "buttonlabel_" + this.element.attr ('ID')),

В обновлении: функция()

Измените this.buttonlabel.html (значение) на $ ("# buttonlabel_" + this.element.attr ("id")). Text (value);

Надеюсь, это поможет.

Cheers

Смежные вопросы