我正在使用select2选择框来填充并显示一些服务器数据。大多数工作正常,因为我能够得到结果并填充组合框。但是当我在搜索框中输入时,选择不会缩小最接近的匹配范围。
我发现问题是因为后端URL不支持基于提供的字符串进行搜索,而select2根据用户输入的文本不断向后端发出多个搜索请求。遗留后端代码一次性返回结果,第一次填充到组合框中。
我的问题是,如何在不进行多次Ajax调用的情况下将选择框聚焦到最接近的匹配结果。我希望搜索发生在已经获取的结果中。
感谢任何帮助我解决这个问题的人。
我的ajax电话如下,如果这有帮助...
select2: {
placeholder: 'Select Next Plan Id',
allowClear: true,
id: function (item) {
return item.id;
},
ajax: {
type: 'GET',
dataType: "jsonp",
url: "http://172.16.7.248:8480/app/gui?action=1&type=11",
data: function (term, page) {
return { search: term };
},
results: function (data, page) {
return { results: data.aaData };
},
success : function(data, status, xhr) {
var html = "<option value=''>None</option>";
$.each(data.aaData, function(i, item) {
html += "<option data=" + JSON.stringify(item.id) + " value=" + item.id + "'>" + item.id + "</option>";
});
$('#nextplanid').html(html);
self.prop('data-loaded', 'true');
},
error : function(data, status, xhr) {
}
},
formatResult: function (item) {
return item.id;
},
formatSelection: function (item) {
return item.id;
},
initSelection: function (element, callback) {
return $.get('/getText', { query: element.val() }, function (data) {
callback(data);
});
}
},