2016-03-04 61 views
0

我在我的網站上使用jQuery UI自動完成功能。我的問題:jQuery自動完成:首次輸入後不顯示下拉菜單

  • 在Chrome和Firefox:當用戶加載網站後迅速進入一個四個字母項,停止輸入,下拉不會立即顯示。只有輸入另一個字母后,纔會顯示下拉菜單。從現在開始,下拉菜單總是顯示,當用戶改變搜索詞時,那麼就沒有問題了。當用戶重新加載頁面並快速輸入新詞並停止時,再次下拉不顯示。當重新加載頁面後,用戶輸入這個詞非常慢,下拉菜單顯示,然後再次沒有問題。我如何實現在「第一次輸入」後顯示下拉菜單?

  • 在Internet Explorer中,下拉菜單從不顯示。

這裏說到我的代碼:

$('#my-search-input').on('keyup', function() { 
      var characterLength = $(this).val().length; 

      if ((characterLength > 2) || (characterLength == 0)) { 
       typewatch(function() { 
        $('#my-search-input').autocomplete({ 
         source: function (request, response) { 
          $.post(Routing.generate('my_path'), { 
           term: request.term 
          }, function (data) { 
           response(data) 
          }, 'json'); 
         }, 
         close: function (event, ui) { 
          loadResults(); 
         } 
        }); 
        loadResults(); 
       }, 500); 
      } 
     }); 

     var typewatch = (function() { 
      var timer = 0; 
      return function (callback, ms) { 
       clearTimeout(timer); 
       timer = setTimeout(callback, ms); 
      }; 
     })(); 

UPDATE:的jsfiddle

又來了一個JS撥弄它具有類似的代碼,其中包含的問題: http://jsfiddle.net/cd1kd08s/

當你鍵入「阿爾巴尼亞」以找到「阿爾巴尼亞」,下拉不會立即顯示。當您繼續輸入字母「i」(導致「Albani」)時,下拉菜單顯示。

回答

0

有沒有必要使用定時器/鍵控聽衆這個東西。想拜訪文檔加載autocomplete插件功能,它的工作原理以及..

檢查fiddle

相關問題