我在使用 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/