jQuery Autocomplete を使用して、約 2000 レコードのリストから結果を表示しています。私の意見では、このリストは非常に長いため、これらすべてのレコードを検索するには適切なフィルターが必要です。
ラベル フィールドだけでなく、値フィールドでも検索できるように、ソースを修正しました。私が今欲しいのは、「Samsung Galaxy S4」を見つける「S4 galaxy」を検索できることです。標準のjqueryオートコンプリートは左から右にしか検索できないため、「galaxy s4」は見つかりますが、「s4 galaxy」は見つかりません。また、「gal s4」を見て「Samsung Galaxy S4」を見つけたいと思っています。
おまけとして、マッチを大胆にするといいですね>「Samsung Galaxy S4」
私が現在使用している完全なコードは以下のとおりです。
var completeResults = [{
value: "S4 iv",
label: "Samsung Galaxy S4",
image: "samsung_galaxy_s_iv_1.jpg"
}, {
value: "stackoverflow",
label: "Nokia lumia 920",
image: "nokia_lumia_920_1.jpg"
}];
completeResults は短いリストになりました! 通常、約 2000 レコード。
function custom_source(request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(completeResults, function (value) {
return matcher.test(value.value) || matcher.test(value.label);
}));
}
$("#s").autocomplete({
source: custom_source,
minLength: 0
}).data("ui-autocomplete")._renderItem = function (ul, item) {
var inner_html = "<a><img src='../img/type/120x200/" + item.image + "' width='21' height='35'/><span class='title'>" + item.label + "</span></a>";
return $("<li></li>")
.data("item.autocomplete", item)
.append(inner_html)
.appendTo(ul);
};