0

所以我从这里使用多选小部件: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"
    }

因此,如果下拉列表具有 .normal 类,我需要 selectedText 来显示所选选项。有任何想法吗?提前致谢。

4

2 回答 2

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

我还没有测试过这个,但告诉它是否适合你。

于 2013-09-20T06:15:46.037 回答
0

我有同样的问题,我正在使用 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);

希望这可以帮助。

干杯

于 2013-10-30T04:26:44.637 回答