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

Drop down menu 为什么ASP.NET DropDownList控件需要单击两次才能在Internet Explorer中展开,drop-down-menu,click,double,Drop Down Menu,Click,Double,我有一个ASP.NET DropDownList控件,它在页面上呈现为下拉列表(选择HTML标记)。出于某种原因,当我使用Internet Explorer时,需要单击两下才能打开它并查看选项,这对最终用户来说只是额外的一次单击。它在Google Chrome、Mozilla Firefox和Safari中运行良好——我只需点击一次就可以看到选择的选项。为什么它不能在IE中正常工作?更重要的是,我如何在IE中修复它 这是我的密码: 必须删除硬编码的onfocus事件。IE处理第一次单击焦点事件,

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

这是我的密码:


必须删除硬编码的onfocus事件。IE处理第一次单击焦点事件,第二次单击展开下拉列表。我想这是IE已知的一个怪癖,还有其他400多个怪癖

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

jQuery(this.Elements.DDLClientName).focus(函数(){ …把代码放在这里
});

我也遇到了同样的问题,这是由于IE10如何处理onFocus,它将第一个焦点视为单击。我所做的是将mousedown事件绑定到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");
                     }
                 });
}

这就是为什么IE sux的原因。请看一看,并说这是什么问题,我没有把重点放在下拉列表中