JqueryUI自动完成自动聚焦覆盖我的文本输入

时间:2012-08-17 20:01:30

标签: jquery jquery-ui jquery-ui-autocomplete

我使用的是最新版本的JqueryUI自动完成功能(1.8.23)。 我正在使用autoFocus:true属性,这给了我一个大问题。

当我开始以稍微快的速度在输入框中输入文字时,autoFocus:true会导致文本被以前匹配的值替换。

例如:当我输入“foot”时,这会向服务器发出请求,并且自动完成下拉菜单中的第一个选项变为“foot”,而我会很快继续输入“football”。当我输入它时,这将取代字母球。

有人面对这个并找到了解决方案吗?

更新

这是jquery ui网站上提出的错误。虽然它已经被修复关闭,但它没有最新的稳定版本可供下载。 http://bugs.jqueryui.com/ticket/7555

如果有人找到了此解决方案的解决方法,那么如果您可以分享它就会很棒。

1 个答案:

答案 0 :(得分:1)

虽然该错误已被JQueryUI团队“修复”,但该修复程序仅在1.9.0版本中可用。所以在那之前,这是解决问题的方法。模糊事件是导致此问题的原因。

将以下代码添加到您网页的javascript:

$('.ui-autocomplete-input').each(function (idx, elem) {
      var autocomplete = $(elem).data('autocomplete');
      if ('undefined' !== typeof autocomplete) {
            var blur = autocomplete.menu.options.blur;
            autocomplete.menu.options.blur = function (evt, ui) {
                  if (autocomplete.pending === 0) {
                        blur.apply(this,  arguments);
                  }
             };
      }
 });

信用转到these folks