Javascript 向select2添加选项而不更改其当前状态

Javascript 向select2添加选项而不更改其当前状态,javascript,jquery,select2,Javascript,Jquery,Select2,我有一个加载了select2的元素。之后,我调用ajax将值放入元素,然后调用$elem.triggerchange.select2以显示新的。如果用户一直在搜索框中键入内容,则会关闭下拉列表,并清空搜索字段。我想做的是让用户无需重新启动即可继续键入。有什么办法可以做到这一点吗?不幸的是,我认为没有;这是一种浏览器定义的行为,事实上,当您将项目添加到打开的浏览器时,不同的浏览器甚至不同的浏览器版本的行为会有所不同 作为替代方案,您可以尝试一些类似选择的组件,如或;它们不是真实的,而是实际的自定义

我有一个加载了select2的元素。之后,我调用ajax将值放入元素,然后调用$elem.triggerchange.select2以显示新的。如果用户一直在搜索框中键入内容,则会关闭下拉列表,并清空搜索字段。我想做的是让用户无需重新启动即可继续键入。有什么办法可以做到这一点吗?

不幸的是,我认为没有;这是一种浏览器定义的行为,事实上,当您将项目添加到打开的浏览器时,不同的浏览器甚至不同的浏览器版本的行为会有所不同


作为替代方案,您可以尝试一些类似选择的组件,如或;它们不是真实的,而是实际的自定义JS组件,其行为类似于此。这会让你更好地控制自己的行为。

不幸的是,我认为不是;这是一种浏览器定义的行为,事实上,当您将项目添加到打开的浏览器时,不同的浏览器甚至不同的浏览器版本的行为会有所不同


作为替代方案,您可以尝试一些类似选择的组件,如或;它们不是真实的,而是实际的自定义JS组件,其行为类似于此。这将使您对行为有更多的控制。

再次阅读文档,似乎使用元素基本上等于没有动态数据,因为所有内容都是从DOM中检索的,因此解决这一问题的唯一方法是使用元素。以下代码符合我的要求:

<input type="hidden" id="elem" />

var arr = [];

$("#elem").select2({
    data: { results: arr }
});

$.ajax({
    ...
    success: function(data) {
        arr = data;
    }
});

然而,这并不是关于使用的100%答案,所以我将不接受这一点,直到希望有更相关的答案出现。

再次阅读文档,似乎使用元素基本上等于没有动态数据,因为所有内容都是从DOM检索的,所以解决这个问题的唯一方法是使用元素。以下代码符合我的要求:

<input type="hidden" id="elem" />

var arr = [];

$("#elem").select2({
    data: { results: arr }
});

$.ajax({
    ...
    success: function(data) {
        arr = data;
    }
});

然而,这并不是关于使用的100%答案,所以我会将其视为不可接受,直到希望有更相关的答案出现。

我已经在使用Select2,只是希望它不会重置用户在使用新选项更新时打开下拉列表并键入搜索文本时所做的一切。哦,对不起,我没有注意那个小细节。。。文档中没有说明如何执行此操作,可能有必要研究库的来源。我已经在使用Select2,只是希望它不会重置用户所做的一切,比如打开下拉列表并在使用新选项更新时键入搜索文本。哦,抱歉,我没有注意那个小细节。。。文件中没有说明如何做到这一点,可能有必要研究图书馆的来源。