将选项添加到select2而不更改其当前状态

时间:2016-05-20 17:12:27

标签: javascript jquery select2

我有一个加载了select2的<select>元素。然后,我进行ajax调用以将值放入元素中,然后调用$("#elem").trigger("change.select2")以显示新的<option>。如果用户在搜索框中输入内容,则会导致下拉菜单关闭,搜索字段将被清空。我想要做的是让用户继续输入而不必重新启动。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

不幸的是,我不相信;这是一个浏览器定义的行为,事实上,当您向开放的<select>添加项目时,不同的浏览器甚至不同的浏览器版本都会表现得不同。

作为替代方案,您可以尝试一些类似选择的组件,例如jQuery UI's SelectmenuSelect2;它们不是真正的<select>,而是实际的自定义JS组件,其表现如此。这可以让您更好地控制行为。

答案 1 :(得分:0)

再次阅读文档,似乎使用<select>元素基本上等于没有动态数据,因为所有内容都是从DOM中检索的,所以解决这个问题的唯一方法就是使用{{1}而是元素。以下代码执行我想要的操作:

<input>

然而,对于使用<input type="hidden" id="elem" /> var arr = []; $("#elem").select2({ data: { results: arr } }); $.ajax({ ... success: function(data) { arr = data; } }); 而言,这并不是100%的答案,所以我会将此视为未接受,直到(希望)更相关的答案出现。