2

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

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

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

有人遇到过这个问题并找到了解决方案吗?

更新

这是 jquery ui 网站上提出的错误。尽管它已按固定方式关闭,但在可供下载的最新稳定版本中不可用。 http://bugs.jqueryui.com/ticket/7555

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

4

1 回答 1

1

尽管 JQueryUI 团队已将 bug 关闭为“已修复”,但显示该修复仅在 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);
                  }
             };
      }
 });

归功于这些人

于 2012-08-18T22:50:02.513 回答