我有一个加载了select2的<select>
元素。然后,我进行ajax调用以将值放入元素中,然后调用$("#elem").trigger("change.select2")
以显示新的<option>
。如果用户在搜索框中输入内容,则会导致下拉菜单关闭,搜索字段将被清空。我想要做的是让用户继续输入而不必重新启动。有没有办法做到这一点?
答案 0 :(得分:0)
不幸的是,我不相信;这是一个浏览器定义的行为,事实上,当您向开放的<select>
添加项目时,不同的浏览器甚至不同的浏览器版本都会表现得不同。
作为替代方案,您可以尝试一些类似选择的组件,例如jQuery UI's Selectmenu或Select2;它们不是真正的<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%的答案,所以我会将此视为未接受,直到(希望)更相关的答案出现。