如何在JQuery UI Multiselect中添加或删除选项?我正在初始化页面加载上的多选,我需要删除现有值并根据其他选择添加新值。我正在使用以下命令初始化页面加载上的多选:
$("#multipleselectboxId").multiselect();
之后,我使用jQuery append()
和remove()
方法为多个下拉列表添加值,这些方法在原始下拉列表中正常工作但在多选中没有得到反映。
任何人都可以帮忙吗?
答案 0 :(得分:23)
对于那个,你可以在改变后摧毁并重新初始化......
$("#multipleselectboxId").append(toAppend).multiselect("destroy").multiselect();
还有另一个带有刷新功能的插件:EricHynds's Multiselect
$("#multipleselectboxId").append(toAppend).multiselect("refresh");
答案 1 :(得分:14)
我找到了解决方法,首先销毁多选并重新初始化它,谢谢@ Brandon Joyce,
解决方法是
$("#multipleselectboxId").append(toAppend);
$("#multipleselectboxId").remove(toRemove);
$("#multipleselectboxId").multiselect('destroy');
$("#multipleselectboxId").multiselect();
答案 2 :(得分:3)
我试图通过.multiselect("destroy")
和.multiselect()
重建多重选择,但它没有用,所以最后我觉得这个解决方案适合我。
$.each(jsonArray, function(i, val) {
$('#frmarticles-f_category_id').append('<option value="'+i+'">'+val+'</option>').multiselect('rebuild');
});
答案 3 :(得分:1)
这个插件运行正常,但我有一个破坏和过滤器的pb:我的组合数据加载了ajax。因此,当我使用ajax调用刷新数据时,我调用destroy来刷新插件:
myCombo.multiselect('destroy');
myCombo.multiselect().multiselectfilter();
它适用于第一次调用:空组合,ajax调用加载数据,调用上面的函数。 但是,如果我刷新组合数据并再次调用上述函数,过滤器会消失吗? 有人经历过这个pb并找到了解决方案吗?
答案 4 :(得分:1)
谢谢你的帮助。我正在使用多选UI小部件,这是有用的
jQuery("select[title='" + FieldNameTitleText + "']").append( "<option value='" + OptionValue+ "'>" + OptionText + "</option>" ).multiselect("refresh");
答案 5 :(得分:1)
就我而言,我只是想用new替换所有以前的multiselect内容。
这对我有用:
$('#multiselect_id').html(newHtml);
$('#multiselect_id').multiselect('refresh');
答案 6 :(得分:1)
这是我做的:它可能不仅仅是必要的,但它对我有用。
需要修改的原始“选择”代码:
<select id="MySelect" name="selection">
<option value="1">One</option>
<option value="2">Two</option>
</select>
我在PHP中重建选项列表,通过JSON将其发送到JavaScript,并在变量中构造/存储新列表。 E.g:
// this is similar to if we got it from PHP
var newList = '<option value="A">Alpha</option>
<option value="B">Beta</option>
<option value="C">Gamma</option>';
现在,要在jQuery UI Multiselect小部件中切换它:
$('#MySelect').html(''); // clear out old list
$('#MySelect').multiselect('destroy'); // tell widget to clear itself
$('#MySelect').html(newList); // add in the new list
$('#MySelect').multiselect(); // re-initialize the widget
特别是,我用参数重新初始化它,例如:
$('#MySelect').multiselect({selectedList: 4, header: false});
如果有人读过这篇文章并且仍然遇到麻烦,请试一试。
答案 7 :(得分:0)
我用这种方式使用它:
$("#<%= cmbInBayiID.ClientID %>").multiselect().trigger('reset');
有效。
答案 8 :(得分:0)
var i = jQuery('input');
i.data('multipleSelect').$parent.remove();
i.removeData('multipleSelect');
i.show();
答案 9 :(得分:0)
function setMultiSelect(idElement, paramVal){
eval("$('#"+idElement+"').multiselect('uncheckAll')");
$.each($('input[name="multiselect_'+idElement+'"]'), function(k,i) {
if(paramVal.indexOf(this.value)!=-1){
this.checked = true;
}
});
eval("$('#"+idElement+"').multiselect('update')");
}
答案 10 :(得分:0)
var valArr = ["1", "2"],
i = 0,
size = valArr.length,
$options = $('#MySelect option');
for (i; i < size; i++) {
$options.filter('[value="' + valArr[i] + '"]').prop('selected', true);
}
$('#MySelect').multiselect('reload');
1.valArr是选择选项的值
2.for循环根据valArr设置所选匹配选项
3.我们的变化只在隐藏的选择元素中
4.改变我们需要重新加载的多选生成元素
5.每个插件可能有不同的名称重新加载,例如:更新,刷新
答案 11 :(得分:0)
我也遇到了同样的问题,但最终,我解决了。请使用$(selecter).multiselect("refresh");
而不是$(selecter).multiselect("reload")
;