私があなたを正しく理解していれば、ユーザーが入力に再び焦点を合わせた場合に同じ結果を表示したいですか?
私の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");
}
});
ドキュメント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");
}
});
コメントにも記載されていますが、ここでも:ドキュメント エントリ