首页 文章

为什么ASP.NET DropDownList控件需要两次单击才能在Internet Explorer中展开

提问于
浏览
3

我有一个ASP.NET DropDownList控件,它可以呈现在页面上的下拉列表中(选择HTML标记) . 出于某种原因,当我在Internet Explorer中时,需要两次点击才能打开它并查看选项,这只是最终用户的额外点击 . 它在Google Chrome,Mozilla Firefox和Safari中运行良好 - 我只需点击一次即可查看选项的选项 . 为什么它在IE中无法正常工作?更重要的是,我如何在IE中修复它?

这是我的代码:

<asp:DropDownList id =“DDLClientName”runat =“server”EnableViewState =“False”AutoPostBack =“True”class =“InputField”onfocus =“Change(this,event)”onblur =“Change(this,event)”>

2 回答

  • 0

    不得不删除硬编码的onfocus事件 . IE处理焦点事件的第一次单击,第二次处理以展开下拉列表 . 我想这是IE的一个已知的怪癖以及其他400个怪癖 .

    我仍在试图找出一种方法来改变焦点下拉的样式 . 根据您在此回调匿名函数中放入的代码,您可能仍需要在IE中单击两次下拉列表 . 我发现你可以使用其他控件,在这个函数中,它不需要两次点击 . 我现在就把它作为答案 . 我想因为微软我们不能在下拉菜单上使用onfocus . 我可能会尝试使用实际的选择标记,而不是使用Microsoft的ASP.NET DropDownList,看看我是否可以使用onfocus事件,而无需额外的点击 . 我对此表示怀疑 .

    jQuery(this.Elements.DDLClientName).focus(function());

  • 3

    我有同样的问题,这是由于IE 10如何处理onFocus,它将第一个焦点视为点击 . 我做的是修复它是将mousedown事件绑定到click事件 . 然后,您可以在click事件中运行所需的任何代码 .

    // if IE 10          
    if (navigator.userAgent.indexOf("MSIE 10") > 0) 
    {
       $("#InvoiceTypeDropDown").bind('mousedown',function(event) {
           $(this).trigger('click')
        });
    }
    

    所以我的完整代码看起来像这样:

    if (navigator.userAgent.indexOf("MSIE 10") > 0)
    {
                    $("#InvoiceTypeDropDown").bind('mousedown',function(event) {
                    $(this).trigger('click')
                    });
                    $("#InvoiceTypeDropDown").click(function () {
                         if ($(this).val() == '') {
                             $(this).css("color", "black");
                             $(this).css("font-style", "normal");
                         }
                     });
    }
    

相关问题