一部のサーバーデータを入力して表示するために、select2 選択ボックスを使用しています。結果を取得してコンボボックスに入力できるため、ほとんどは正常に機能します。しかし、検索ボックスに入力すると、選択は最も近い一致を絞り込みません。
バックエンド URL が提供された文字列に基づいた検索をサポートしていないのに対し、select2 はユーザーが入力したテキストに基づいてバックエンドに複数の検索要求を出し続けていることが問題であることがわかりました。従来のバックエンド コードは、最初にコンボボックスに入力される 1 回のショットで結果を返します。
私の質問は、複数の 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);
});
}
}、