2013-04-16 12 views
1

       我在Bootstrap中使用typeahead爲我的應用程序使用Ajax從服務器端獲取建議。
   一切都只是罰款:我寫正確的輸入,並獲得像「走的建議Dead'.When我開始輸入了錯誤的輸入,像walkkkk,建議仍然存在,除非我按ESC鍵。它讓我很煩。
enter image description here
   我檢查了服務器端,當我開始輸入錯誤的輸入時,服務器不返回任何內容。
   如何自動隱藏建議?鍵入自舉:當輸入不匹配時,建議保留在那裏

這裏是相對的js代碼:

$('#query').typeahead({ 
    source: function(query, process){ 
     suggestions = {}; 
     labels = []; 
     $.post('suggest.do', {query: query, limit: '10'}, function(data){ 
      var sugg = jQuery.parseJSON(data).data; 

      if(sugg == 'NOTHING' || sugg == 'ERROR'){ 
       return; 
      } 
      $.each(sugg, function(index, item){ 
       suggestions[item.name] = item; 
       labels.push(item.name); 
      }); 
      return process(labels); 
     }); 
    }, 
    items: 10, 
    minLength: 1, 
    updater: function(item){ 
     //irrelative code 
    }, 
    matcher: function(item){ 
     return true; 
    }, 
    highlighter: function(item){ 
     var ent = suggestions[item]; 
     var html = '' + 
        '<div class="entity-block">' + 
        '<span class="label label-important">' + ent.type + '</span>&nbsp;' + 
        '<span class="sugg-name">' + ent.name + '</span>' + 
        '</div>'; 
     return html; 
    } 
}); 
+0

你爲什麼不只是發送異步請求到服務器之前清除建議 – dreamweiver

回答

0
source: function(query, process){ 
    suggestions = {}; 
    labels = []; 
    $.post('suggest.do', {query: query, limit: '10'}, function(data){ 

     //Check if any data is returned, if not clear the text and exit the func 
     if(!data || data.length == 0){ 
      $('#query').val(""); 
      return; 
     } 

     var sugg = jQuery.parseJSON(data).data; 

     if(sugg == 'NOTHING' || sugg == 'ERROR'){ 
      return; 
     } 
     $.each(sugg, function(index, item){ 
      suggestions[item.name] = item; 
      labels.push(item.name); 
     }); 
     return process(labels); 
    }); 
}, 
相關問題