JQuery UI Autocomplete 自动触发 (IE)

标签 jquery internet-explorer user-interface autocomplete

我在使用 JQuery 自动完成和 Internet Explorer 时遇到了非常严重的问题。

首先,我有一个带有特殊字符值的输入字段,例如:

<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags" value="Häskell">
</div>

然后我的 JQuery UI 自动完成代码看起来像

$(function() {
        var availableTags = [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            "COBOL",
            "ColdFusion",
            "Erlang",
            "Fortran",
            "Groovy",
            "Häskell",
            "Java",
            "JavaScript",
            "Lisp",
            "Perl",
            "PHP",
            "Python",
            "Ruby",
            "Scala",
            "Scheme"
        ];
        $( "#tags" ).autocomplete({
            source: availableTags
        });
    });

现在,当我使用 Internet Explorer 访问该网站时,自动完成功能会自动触发并显示条目“Häskell”。 (您也可以按F5重现该错误) 但只有当输入字段值具有特殊字符(如 ä、ö、... 时)才会发生这种情况

我还发现了一个 Bug Ticket http://bugs.jqueryui.com/ticket/9796#no1

有人可以帮我吗?

非常感谢!

最佳答案

为了防止此类事件,您应该稍微修改一下 jquery ui(这是 IE 和部分 jquery 的真正错误)。问题出在下一个功能中。 IE 会引发事件“输入”,而其他浏览器不会引发该事件。 修改此函数之前有下一个 View :

input:function(e) {
  if (r) {
    r =! 1, e.preventDefault();
    return;
  }
  this._searchTimeout(e)
}

<小时/> 您应该将其修改为下一个

input:function(e) {
  if (r || typeof(r) == "undefined") {
    r =! 1, e.preventDefault();
    return;
  }
  this._searchTimeout(e)
}

关于JQuery UI Autocomplete 自动触发 (IE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22349375/

相关文章:

javascript - 计算某个类之后具有相同类的所有 div 直到 dom 末尾(包括嵌套 div)?

internet-explorer - 存储在 Amazon AWS S3 上的图像未在 Internet Explorer 中呈现

css - 过滤器 : progid:DXImageTransform. Microsoft.gradient CSS 属性在 IE 中不起作用

jQuery mCustomScrollbar 不适用于 ajax 内容

javascript - vuejs 如何绑定(bind) id 到 ajax 请求 url?

javascript - 如何修复 Internet Explorer 列宽

jquery - 有人知道一个很酷的 jquery 进化图片吗?

Java GUI 编译没有错误,但有时什么都不显示

java - 如何使用 Java 为 Windows 编写软件?

javascript - jQuery .hide() 不隐藏元素