我有一个下拉菜单,单击div中的一个,显示List。
关注焦点我应该隐藏列表(即当用户点击或聚焦其他元素而不是鼠标时)。因此,我明显的选择是onblur
。
现在JavaScript似乎在Firefox中工作,但在IE中却没有,因为我的div有一个指定高度和宽度的子div。这在测试文件中是可重现的。我正在使用jQuery。
这是Internet Explorer中的已知问题吗?什么是工作?
<html>
<head>
<title>Exploring IE</title>
<style type="text/css">
/** Exploring IE**/
.selected_option div {height:18px;}
</style>
<script type="text/javascript" src="jquery-1.3.2.min9919.js"></script>
<script type="text/javascript">
$().ready(function(){
$('.selected_option').blur(function(){
alert('blurred');
});
});
</script>
</head>
<body>
<div class="selected_option" tabindex="0">
<div>anywhere in the page</div>
</div>
</body>
</html>
答案 0 :(得分:7)
IE专有的focusout
事件对我有用:
$('.selected_option').bind('focusout', function(){
alert('focusout');
});
同样,这是专有的(参见quirksmode),但如果它能解决您的问题,则可能是合适的。您始终可以绑定blur
和focusout
事件。
答案 1 :(得分:2)
onkeypress="this.blur(); return false;"
它适用于所有IE版本
答案 2 :(得分:1)
首先意识到仅focusable elements支持focus
和blur
事件。为了使<div>
成为焦点,您需要查看tabindex
property。
答案 3 :(得分:1)
尝试使用锚标记而不是div,因为它们是天真可聚焦的。您可以将锚点的href设置为“javascript:void(0)”以防止它实际链接到页面并使用css属性“display:block”使其像div一样呈现。像这样:
<html>
<head>
<title>Exploring IE</title>
<style type="text/css">
/** Exploring IE**/
.selected_option
{
display: block;
height:18px;
}
</style>
<script type="text/javascript" src="jquery-1.3.2.min9919.js"></script>
<script type="text/javascript">
$().ready(function(){
$('.selected_option').blur(function(){
alert('blurred');
});
});
</script>
</head>
<body>
<a href="javascript:void(0)" class="selected_option">anywhere in the page</a>
</body>
</html>
没有对此进行测试,但我认为它应该可行。
答案 4 :(得分:0)
尝试:
$('.selected_option').bind('blur', function(){
alert('blurred');
});
此外,你可以制作另一个技巧 - 处理所有鼠标点击或/和焦点事件,如果选择了另一个控件,那么你自己的模糊(当然如果以前选择了它)。
答案 5 :(得分:0)
我已经将div的tabIndex属性设置为可聚焦,而且如果我注释模糊事件的高度,那么我认为这不是问题。