如何使用MultiSelect jQuery插件添加选项

6

我正在使用jQuery-MultiSelect插件。

我希望能够向我的初始选择框中添加一个选项,然后让MultiSelect用户界面更新新的选项。

这是我目前的代码(不起作用)。

var value = $("#newGroup").val();
$('#Select1').append("<option value=\"" + value + "\">" + value + "</option>");

然后我尝试调用相同的代码来重新创建多选项,以及其他选项,比如首先销毁它。

这是我用来实现插件的代码。

$("#Select1").multiselect({ sortable: false, searchable: true });

这是插件的主页: http://quasipartikel.at/multiselect_next/
4个回答

21

你是否拥有最新版本的MultiSelect?版本1.8现在添加了一个刷新命令,旨在更新列表以反映新添加或删除的选项。您的代码序列应该是:

var value = $("#newGroup").val();
$('#Select1').append("<option value=\"" + value + "\">" + value + "</option>");
$('#Select1').multiselect( 'refresh' );

感谢您的回复。由于这个问题已经超过一年了,我不再继续解决这个问题。我不知道您提供的解决方案是否可行,也无法进行测试!希望这能帮助其他可能遇到此类问题的人,如果这个解决方案有效,那么点赞将是您的奖励! - Clarence Klopfstein
1
谢谢你的“刷新”,当你想要选择所有选项时,它也非常有用:$('#selcVar option').each(function() {$(this).prop('selected', true);}); $('#selcVar').multiselect( 'refresh' ); - Le Droid
1
我有一个带有大写字母"S"的multiSelect版本,请考虑添加编辑功能。 - Rubber Duck

5
尝试使用。
$('.multiselect').multiselect('destroy');
$('.multiselect').multiselect();

我尝试过这个。出现了错误:$.widget.prototype.destroy 未定义。在网上搜索后,我解决了这个问题,但是$('.multiselect').multiselect();列表框仍然是普通的。 "新"外观没有重新应用。 - Clarence Klopfstein
1
我认为在你的情况下应该是这样的:$('#Select1').multiselect('destroy'); $('#Select1').multiselect(); - elf
只是为了明确,使用Select1时,我遇到了上述问题。 - Clarence Klopfstein
1
我一直在寻找这样的解决方案,刷新不起作用,但是使用 "destroy" 然后创建多重选择器就可以了,它还保持了我添加或删除的元素的状态。谢谢! - Will Sampson

3

对于旧版本,您可以尝试这个方法

$('select').multiselect('destroy').removeData().multiselect();

"destroy"方法不会从选择节点中删除数据,因此当您尝试重新初始化它时,它会认为已经初始化过了。使用removeData()可以解决这个问题。
新版本有“refresh”方法,所以您可以将一些选项附加到选择器上,然后调用该方法。
$('select').multiselect('refresh');

当多选已初始化时。

1
即使我也遇到了类似的问题,当我将选项添加到选择框中后,它没有更新多选框,所以我找到了以下解决方案。
$('#Select1').append("<option value=\"" + value + "\">" + value + "</option>");

在此之后添加这一行。
$('#Select1').multiselect('rebuild');

它将使用最新添加的数据重新构建多选框。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接