我正在使用jQuery自動完成來顯示大約2000條記錄列表的結果。因爲這個列表在我看來很長,我需要一個很好的過濾器來搜索所有這些記錄。jQuery自動完成UI搜索所有方向
我已經修改了源代碼,以便我不僅可以在標籤字段中搜索,還可以在值字段中搜索。我現在想要的是,我可以搜索「S4 galaxy」,找到「Samsung Galaxy S4」。標準的jquery自動完成只能從左到右進行搜索,因此將會找到「galaxy s4」,而不是「s4 galaxy」。我也想看看「gal 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現在是一個:
作爲一個額外的,它如果比賽被進行了大膽的>「三星銀河S4」
完整的代碼我現在用下面的看臺將是很好短名單!通常約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);
};
有了這麼多的記錄,你可能會更好地做你的服務器上搜索 – 2013-05-02 12:47:43
嗯,我想在瀏覽器中這樣做,所以我會有更少的數據庫查詢。我怎麼能做這個服務器端?用PHP?我不想連續查詢數據庫,因爲如果每天有幾千人使用這個數據庫,這會給我帶來很多的數據庫使用! – Timo002 2013-05-02 12:57:20
這是真的,絕對是一種折衷。儘管您的Web服務器可以處理數千個請求。還有一個問題 - 如果我輸入「諾基亞三星」,我應該得到兩個結果嗎?或者是否在建議項目中找到每個術語? – 2013-05-02 13:06:43