我有一個腳本,它允許顯示谷歌的建議。問題是,即使輸入值與可用數據不同,它仍然顯示列表,我寧願將其關閉。看看這個小提琴:JsFiddle關閉jQuery的自動完成,如果查詢不像數據
鍵入一個字母比'cjfsdkcrdvhcxrbsks'一些垃圾你會看到列表仍然顯示。那麼如果價值與建議不符,我該如何關閉它?
我有一個腳本,它允許顯示谷歌的建議。問題是,即使輸入值與可用數據不同,它仍然顯示列表,我寧願將其關閉。看看這個小提琴:JsFiddle關閉jQuery的自動完成,如果查詢不像數據
鍵入一個字母比'cjfsdkcrdvhcxrbsks'一些垃圾你會看到列表仍然顯示。那麼如果價值與建議不符,我該如何關閉它?
如果您在控制檯中查看,則實際發生錯誤。
當搜索沒有返回結果時,對象data.query.results.toplevel
爲空。由於您沒有檢查,因此嘗試訪問data.query.results.toplevel.CompleteSuggestion
時出現異常,菜單不能簡單地關閉,因爲代碼剛停止工作。
檢查null爲data.query.results.toplevel
,並在情況下,它爲空,則使用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;
}
剛剛查了一下使用Firebug的頁面的回報,這應該工作,希望
我改變了小提琴更新的鏈接。 – Youss 2012-03-10 11:59:24