JQuery UI自动完成自动触发(IE)

我对JQuery Autocomplete和Internet Explorer有一个非常糟糕的问题。

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

然后我的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访问该站点时,自动完成function会自动触发并显示条目“Häskell”。 (您也可以按F5重现该错误)但只有在输入字段值具有ä,ö等特殊字符时才会发生…

我还找到了一张Bug Ticket http://bugs.jqueryui.com/ticket/9796#no1

有人可以帮帮我吗?

十分感谢!

为了防止这样的事件你应该稍微修改jquery ui(这是IE的真正错误和部分jquery)。 问题出在下一个function中。 IE上升事件“输入”,其他浏览器不会上升它。 在修改此函数之前有下一个视图:

 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) } 

也面临这个问题,但初始化时有任何输入值。 通过添加超时解决。

 $(function () { setTimeout(function(){ $("selector").autocomplete({ // autocomplete options }), 1000); }); 

我最近遇到了这个问题,输入值包含西里尔字母。

我已经实现了以下解决方法,而没有破解jQuery UI自动完成小部件代码。 与以前的解决方案相比,它可以在本地环境中实现。 因此,当您在表单元素中初始化自动完成时可能会很有用,例如您自己的固定jQuery插件。

 var flagAutoCompleteInitDone; // we assume that user will not start fill-in the form immediately setTimeout(function(){flagAutoCompleteInitDone =true;}, 1000); $('selector') .each(function(){ // IE11 hack // first we handle 'input' event and prevent its further propagation // until our variable is initialized with setTimeout() handler call this.addEventListener('input', function(ev){ if( typeof flagAutoCompleteInitDone === 'undefined'){ ev.stopImmediatePropagation(); } }, false); }) // /IE11 hack .autocomplete({ /* your autocomplete options */ }); 

测试了jQueryUI ver。 1.11.4和jQuery 1.6.1+