代码之家  ›  专栏  ›  技术社区  ›  triplethreat77

多选下拉窗口小部件未显示所选选项?

  •  0
  • triplethreat77  · 技术社区  · 11 年前

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

    所以,如果下拉列表中有class.normal,我需要selectedText来显示所选选项。有什么想法吗?提前谢谢。

    2 回复  |  直到 2 年前
        1
  •  2
  •   Rajesh Dhiman    11 年前

    您必须更改中的一些代码 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;
        },
    

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

        2
  •  0
  •   r a    11 年前

    我也有同样的问题,我使用的是javascript 1.7.2

    问题是selectedText只在第一次加载时考虑,当我更改复选框时,我的按钮的selectedText不会更改。最后,我通过如下修改jquery.multiselect.js来解决这个问题:

    在创建中:函数()

    编辑按钮标签以:

    buttonlabel=(this.buttonlabel=$('')) .html(o.noneSelectedText) .appendTo(按钮) .attr(“id”,“buttonlabel_”+this.element.attr“id”),

    更新中:函数()

    将this.buttonlabel.html(值)更改为$(“#buttonlabel_”+this.element.attr(“id”)).text(值);

    希望这能有所帮助。

    干杯