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

时间:2014-03-12 10:59:33

标签: jquery internet-explorer user-interface autocomplete

3 个答案:

答案 0 :(得分:3)

为了防止这样的事件你应该稍微修改jquery ui(这是IE的真正错误和部分jquery)。问题出在下一个功能中。 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)
}

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

我在不破解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 +