2016-03-04 74 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