Выпадающий виджет MultiSelect не показывает выбранный параметр?

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

  $.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: 'Выбрать...', });   -  person triplethreat77    schedule 19.09.2013
comment
Вы можете сделать это, но что, если выбрано более одного элемента, как вы хотите их отобразить?   -  person Rajesh Dhiman    schedule 19.09.2013
comment
Если выбрано более одного, можно оставить # selected. Меня просто беспокоят выпадающие списки с выбором одного варианта.   -  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.

Проблема в том, что selectedText учитывается только при первой загрузке, и когда я меняю флажок, slectedText моей кнопки не меняется. Наконец, мне удалось решить проблему, изменив 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