Javascript MultiSelect下拉小部件未显示所选选项?

Javascript MultiSelect下拉小部件未显示所选选项?,javascript,jquery,widget,option,html-select,Javascript,Jquery,Widget,Option,Html Select,因此,我在这里使用multiselect小部件:它在本例中运行良好。当我使用与普通(仅选择1选项)下拉菜单严格相同的下拉菜单样式(以保持一致)时,我的问题是下拉菜单显示1已选择。我需要更改此选项以显示所选选项,因此“红色”由红色、黄色、蓝色改为“红色”。确定所选选项文本的代码如下: $.widget("ech.multiselect", { // default options options: { header: true, height: 175

因此,我在这里使用multiselect小部件:它在本例中运行良好。当我使用与普通(仅选择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"
    }

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

您必须更改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;
    },
//更新按钮文本。调用refresh()以重新生成
更新:函数(){
var o=此选项;
var$inputs=此参数为输入;
var$checked=$inputs.filter(':checked');
var numChecked=$checked.length;
var值;
如果(numChecked==0){
值=o.noneSelectedText;
}else if(numChecked==1){
value=$checked.val();
}否则{
if($.isFunction(o.selectedText)){
value=o.selectedText.call(这个,numChecked,$inputs.length,$checked.get());

}否则,如果(/\d/.test(o.selectedList)&&o.selectedList>0&&numChecked我也有同样的问题,并且我正在使用javascript 1.7.2

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

在_create:function()中

编辑按钮标记为:

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

在更新中:函数()

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

希望这有帮助


Cheers

上面的代码没有设置值。您需要覆盖更新功能。我理解。如何将其更改为动态拾取选项文本,而不是硬编码?$(“.Styleized”)。multiselect({//selectedText:false header:false,multiple:false,minWidth:80,selectedText:'Select…,});您可以这样做,但如果选择了多个项目,您希望如何显示它们?如果选择了多个项目,则可以保持为#选中状态。我只关心带有“选择一”选项的下拉列表。太好了。这正是我需要的。谢谢。