Googleの提案を表示できるスクリプトがあります。問題は、入力の値が利用可能なデータと異なる場合でも、リストが表示されていることです。このフィドルを見てみましょう:閉じるクエリがデータのようなものでない場合、jqueryオートコンプリート
「cjfsdkcrdvhcxrbsks」のようなゴミ以上の文字を入力しても、リストはまだ表示されています。値が提案と一致しない場合、どのように閉じますか?
Googleの提案を表示できるスクリプトがあります。問題は、入力の値が利用可能なデータと異なる場合でも、リストが表示されていることです。このフィドルを見てみましょう:閉じるクエリがデータのようなものでない場合、jqueryオートコンプリート
「cjfsdkcrdvhcxrbsks」のようなゴミ以上の文字を入力しても、リストはまだ表示されています。値が提案と一致しない場合、どのように閉じますか?
コンソールにルックがあると、実際にはエラーが発生します。
検索結果が返されない場合、オブジェクトdata.query.results.toplevel
はnullです。これをチェックしないので、data.query.results.toplevel.CompleteSuggestion
にアクセスしようとすると例外があり、コードが単に機能しなくなるだけでメニューが閉じることはありません。
data.query.results.toplevel
の場合はnullをチェックし、場合には、それがnullの場合、メニューを閉じるにはresponse([]);
を使用します。
success: function(data) {
if (typeof data == 'string') {
data = $.parseJSON(data);
}
if (data.query.results.toplevel === null) {
// passing an empty array to response callback closes the menu
response([]);
return;
}
response(
$.map(
data.query.results.toplevel.CompleteSuggestion,
function(item) {
return {
label: item.suggestion.data,
value: item.suggestion.data
};
}));
}
success: function(data) {
if (typeof data == 'string') data = $.parseJSON(data);
if (data.query.results.toplevel == null){
$(this).autocomplete("close"); return;
}
だけのページに戻りますが、放火犯を使用してどのようなチェックされ、この
更新されたリンクを更新しました。 – Youss