下拉菜单 - 为什么 ASP.NET 下拉列表控件需要单击两次才能在 Internet Explorer 中展开



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

这是我的代码:

<asp:DropDownList>

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

我仍在尝试找出一种方法来更改焦点下拉菜单的样式。 根据您放入此回调匿名函数的代码,您可能仍需要在 IE 中单击下拉列表两次。 我发现您可以在此功能中使用其他控件进行猴子操作,并且不需要单击两次。 我现在将保留这个作为答案。 我想由于Microsoft我们根本无法在下拉菜单上使用对焦。 我可能会尝试使用实际的选择标签,而不是使用Microsoft的 ASP.NET DropDownList,看看我是否可以使用onfocus事件,而无需额外的点击。 我怀疑。

jQuery(this.Elements.DDLClientName).focus(function() { ..将代码放在这里});

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

// 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");
                     }
                 });
}

最新更新