如果我理解你的權利,你要表現出同樣的結果,如果用戶重新論點集中輸入?
在我的jsfiddle它似乎工作,但我不知道這是否會觸發AJAX呼叫。 反正看到我所做的:
$('#autocomplete').autocomplete({
source: availableTags,
minLength: 0
}).focus(function() {
var $this = $(this);
var inputVal = $this.val();
//just a check to prevent showing all results if inputVal is empty
if (inputVal !== '') {
$this.autocomplete("search");
}
});
通知的docs說什麼search
的方法:
當參數調用,則使用當前輸入的值。
編輯
使用一種「緩存」似乎是解決您的問題的好辦法。因爲我無法真正使用源代碼,所以我只使用jsfiddle的/echo/json/
並將緩存設置爲整個源代碼(availableTags)。但想象一下,你有一個真實的請求並保存響應。當使用真實的源代碼時它會工作正常。(當結果被緩存在警報未彈出,並輸入不改變)
updated fiddle
更新的代碼
var cache = {};
$('#autocomplete').autocomplete({
source: function (request, response) {
var term = request.term;
//check if searched input is in cache and return it as response
if (term in cache) {
response(cache[term]);
return;
}
$.getJSON("/echo/json/", request, function (data, status, xhr) {
alert("Request triggered!");
//write response in cache
cache[term] = availableTags;
response(availableTags);
});
},
minLength: 0
}).focus(function() {
var $this = $(this);
var inputVal = $this.val();
if (inputVal !== '') {
$this.autocomplete("search");
}
});
在評論中也提到,但在這裏再次:Documentation Entry
+1。好點,它的作品。缺點:ajax調用被重新執行。 – 2013-05-14 14:45:23
也許[遠程緩存](http://jqueryui.com/autocomplete/#remote-with-cache)功能可以解決?沒有機會使用服務器端源測試'autocomplete'。 – SirDerpington 2013-05-14 14:59:04
我剛加了一個更新的小提琴。如果您重新聚焦輸入並且輸入值相同,請求不會觸發。但是,如果您希望在最多一次請求時只讓它觸發一次,並將響應設置爲源,例如使用'availableTags'作爲源時 – SirDerpington 2013-05-14 15:31:45