占位符在页面加载时打开 jQuery UI 自动完成组合框(IE10)

Posted

技术标签:

【中文标题】占位符在页面加载时打开 jQuery UI 自动完成组合框(IE10)【英文标题】:Placeholder opens jQuery UI autocomplete combobox on page load (IE10) 【发布时间】:2015-03-23 11:02:48 【问题描述】:

我正在使用 jQuery UI 自动完成组合框小部件。当我在组合框上添加占位符时,默认情况下会打开自动完成框。

这种情况仅在 IE10 及更高版本上发生

这是我的代码:

 _create: function () 
            this.wrapper = $("<span>")
            .addClass("custom-combobox")
            .insertAfter(this.element);
            this.element.hide();
            this._createAutocomplete();
            this._createShowAllButton(); 
            this.input.attr("placeholder", this.element.attr('placeholder'));
        ,

【问题讨论】:

请写一些关于这个问题的更多细节。 【参考方案1】:

我们注意到问题正在通过实际聚焦组合框得到解决。

一旦组合框获得焦点,自动完成框就消失了,当组合框失去焦点时它仍然保持原样。

所以,我们的解决方案有点hack-ish,我们添加了.focus(),后跟.blur()

 _create: function () 
            this.wrapper = $("<span>")
            .addClass("custom-combobox")
            .insertAfter(this.element);
            this.element.hide();
            this._createAutocomplete();
            this._createShowAllButton(); 
            this.input.attr("placeholder", this.element.attr('placeholder'));

            this.input.focus().blur();
          //^^^^^^^^^^^^^^^^^^^^^^^^^^ Voila!
        ,

【讨论】:

【参考方案2】:

我们在 IE10+ 中遇到了同样的问题,但只是当我们添加一个带有特殊字符(德语“元音变音”)的占位符时。

Seckin 的解决方案也解决了我们的问题 - 经过 1 天的 Google 努力 ;-)

试图投票给答案-但作为新手,我没有这样做的声誉...

_create: function () 
        this.wrapper = $("<span>")
        .addClass("custom-combobox")
        .insertAfter(this.element);
        this.element.hide();
        this._createAutocomplete();
        this._createShowAllButton(); 

        this.input.attr( "placeholder", 'Bitte wählen' );
        this.input.focus().blur();

    ,

【讨论】:

我真的很高兴它有帮助!感谢@oekokroete 的信任,但是因为它是相同的解决方案;我认为这不应该是一个答案,欢迎您将其添加为对现有答案的评论。

以上是关于占位符在页面加载时打开 jQuery UI 自动完成组合框(IE10)的主要内容,如果未能解决你的问题,请参考以下文章

首次加载页面时,Jquery UI 自动完成功能不起作用

占位符在 IE8 和 IE9 中不起作用,即使使用 jQuery 插件

jquery.ui 可使用表和 item:tr 排序,占位符困难

如何修复 select2 的占位符在文档准备好时被截断?

如何在没有 jquery 的情况下在 Angular 中的页面加载时自动打开 HTML 日历

初始化和打开 Jquery-ui 对话框