Javascript MultiSelect下拉小部件未显示所选选项?
因此,我在这里使用multiselect小部件:它在本例中运行良好。当我使用与普通(仅选择1选项)下拉菜单严格相同的下拉菜单样式(以保持一致)时,我的问题是下拉菜单显示1已选择。我需要更改此选项以显示所选选项,因此“红色”由红色、黄色、蓝色改为“红色”。确定所选选项文本的代码如下: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
$.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…,});您可以这样做,但如果选择了多个项目,您希望如何显示它们?如果选择了多个项目,则可以保持为#选中状态。我只关心带有“选择一”选项的下拉列表。太好了。这正是我需要的。谢谢。