2012-03-10 15 views
1

Googleの提案を表示できるスクリプトがあります。問題は、入力の値が利用可能なデータと異なる場合でも、リストが表示されていることです。このフィドルを見てみましょう:閉じるクエリがデータのようなものでない場合、jqueryオートコンプリート

「cjfsdkcrdvhcxrbsks」のようなゴミ以上の文字を入力しても、リストはまだ表示されています。値が提案と一致しない場合、どのように閉じますか?

+0

更新されたリンクを更新しました。 – Youss

答えて

2

コンソールにルックがあると、実際にはエラーが発生します。

検索結果が返されない場合、オブジェクト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 
       }; 
     })); 
} 

DEMO

1
success: function(data) { 

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

だけのページに戻りますが、放火犯を使用してどのようなチェックされ、この

関連する問題