2012-03-10 61 views
1

我有一個腳本,它允許顯示谷歌的建議。問題是,即使輸入值與可用數據不同,它仍然顯示列表,我寧願將其關閉。看看這個小提琴:JsFiddle關閉jQuery的自動完成,如果查詢不像數據

鍵入一個字母比'cjfsdkcrdvhcxrbsks'一些垃圾你會看到列表仍然顯示。那麼如果價值與建議不符,我該如何關閉它?

+0

我改變了小提琴更新的鏈接。 – Youss 2012-03-10 11:59:24

回答

2

如果您在控制檯中查看,則實際發生錯誤。

當搜索沒有返回結果時,對象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 
       }; 
     })); 
} 

DEMO

1
success: function(data) { 

      if (typeof data == 'string') data = $.parseJSON(data); 
      if (data.query.results.toplevel == null){ 
        $(this).autocomplete("close"); return; 
      } 

剛剛查了一下使用Firebug的頁面的回報,這應該工作,希望