Javascript 选择2-使用预加载选项创建ajax
我有一个相当简单的需求集,但我一辈子都不知道如何通过Select2实现它Javascript 选择2-使用预加载选项创建ajax,javascript,jquery-select2,Javascript,Jquery Select2,我有一个相当简单的需求集,但我一辈子都不知道如何通过Select2实现它 我想在页面上输入一些信息 用户可以在其中键入以触发AJAX调用 它还显示了一个预加载的选项列表,用户可以单击这些选项而不是键入来触发AJAX 如果关闭(模糊)输入,然后再次打开它,那么之前加载的AJAX响应应该仍然显示(而不是选项为空,您必须开始键入以再次加载它们) 我可以做#1和#2(当然也可以做#1和#3!),但我无法在一个输入字段中获得所有三个需求。我没有找到任何办法 实际上,为了实现#3,我想我正在寻找一种方法,将
数据
但不起作用,我尝试过使用initSelection,直到我意识到这不相关,我尝试过各种方法,但都没有用
希望这是可能的,我只是错过了一个选择的地方
顺便说一下,我已经阅读了堆栈上的几个线程,它们的标题与此类似,但它们似乎都没有回答这个问题。如果我错过了重要的一个,就告诉我 如果您使用Select2的
query
选项,而不是ajax
选项,我认为您可以做到这一点。这样,如果输入了任何字符,就可以发出ajax请求,但是如果没有输入字符,就显示默认列表
如果您的默认选项定义如下:
var DEFAULT_OPTIONS = [
{ id: 'def1', text: 'Default Choice 1' },
{ id: 'def2', text: 'Default Choice 2' },
{ id: 'def3', text: 'Default Choice 3' }
];
您可以执行以下操作:
var lastOptions = DEFAULT_OPTIONS;
$('#select').select2({
minimumInputLength: 0,
query: function(options) {
if (options.term) {
$.ajax({
type: 'post', // Or 'get' if appropriate
url: 'your_ajax_url',
dataType: 'json',
data: {
term: options.term // Change name to what is expected
},
success: function(data) {
lastOptions = data;
options.callback({ results: data });
}
});
} else {
options.callback({ results: lastOptions });
}
}
});
你是个天才:)这看起来很有前途。我只需要弄清楚如何将一个相当复杂且分页的select2.ajax调用转换为$.ajax调用@caponica-我以前从未使用过Select2的分页功能。我想我应该试着扩展我上面的答案来支持分页,这就是我的想法:你当然知道你的select2!我已经得到了这项工作,它的反应足够的没有分页了。当需要对这个(或任何其他select2字段)进行分页时,我将更详细地检查您的小提琴。非常感谢您的跟进!