模糊事件不会在IE7和IE6中被触发

时间:2009-08-14 11:27:40

标签: javascript jquery internet-explorer onblur

我有一个下拉菜单,单击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>

6 个答案:

答案 0 :(得分:7)

IE专有的focusout事件对我有用:

$('.selected_option').bind('focusout', function(){
    alert('focusout');
});

同样,这是专有的(参见quirksmode),但如果它能解决您的问题,则可能是合适的。您始终可以绑定blurfocusout事件。

答案 1 :(得分:2)

onkeypress="this.blur(); return false;"

它适用于所有IE版本

答案 2 :(得分:1)

首先意识到仅focusable elements支持focusblur事件。为了使<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属性设置为可聚焦,而且如果我注释模糊事件的高度,那么我认为这不是问题。