IE7 Dropdownlist在className更改onfocus后第一次单击时不显示

时间:2011-05-18 15:29:36

标签: c# javascript asp.net internet-explorer-7

我正在尝试更改其onfocus事件的下拉列表的CSS类以更改其背景颜色。

当用户点击下拉列表时,CSS类被更改(背景颜色已更改),但在再次单击选项列表之前,不会显示选项列表。

这在IE7中发生。它在Firefox中运行良好。

我在这个问题上找到的唯一建议是建议使用onfocusin事件:

http://www.eggheadcafe.com/software/aspnet/34297064/open-dropdown-list-only-with-double-mouse-click.aspx

但这没有任何效果。

onfocus事件附加在后面代码中的下拉列表中:

ddl.Attributes.Add("onfocus", "setCssClass();");

javascript设置类:

ddl.className = "Class1";

请帮忙!

2 个答案:

答案 0 :(得分:1)

感谢任何看过这个的人,但我自己找到了答案。

问题仅在焦点来自几个特定控件时才会发生。这些控件有onblur事件,也设置了下拉列表。

我曾假设这些onblur事件会在onfocus / onfocusin之前运行,但似乎并非如此。然后onblur事件似乎在应用类更改时关闭下拉列表。

无论如何,我现在检查哪个控件关注这些onblur事件,如果它是下拉列表,我不会在onblur中运行主逻辑,现在所有控件都按预期工作。

答案 1 :(得分:0)

使用Internet Explorer时,使用硬编码的“onfocus”事件会强制您获得2次点击。这是IE的一个已知的怪癖。虽然这种解决方案并不完美。如果您在.focus()回调中的此匿名函数中有警报,则仍需要单击两次下拉列表。你必须要有创意。

作为一种解决方法,只需使用jQuery .focus事件。

jQuery([dropdownlist object])。focus(function(){

 ... put code here

});