【问题标题】:Blur a select after change in Internet Explorer 6在 Internet Explorer 6 中更改后模糊选择
【发布时间】:2009-09-24 22:29:02
【问题描述】:

真的很简单的问题。这适用于除 IE6 之外的所有版本:

<html>
<body>
</body>
<select id="test" onchange="blur()">
<option name="one">One</option>
<option name="two">Two</option>
<option name="three">Three</option>
</select>
</html>

有没有办法让它在 IE6 中工作?允许 JavaScript 和 JQuery hack。

有什么想法、评论或提示吗? 提前致谢

【问题讨论】:

  • 看起来你缺少一些代码。
  • blur() 不起作用。抱歉应该更清楚地说明。

标签: javascript html internet-explorer-6


【解决方案1】:

在 jQuery 下:

<script type="text/javascript">
$(function() {
    $('#test').change(function() {
        $(this).blur();
    });
});
</script>

或者您可以尝试替换:

与:

<select id="test" onchange="javascript:blur(this);">

UPDATE:实际上IE6 JavaScript引擎似乎有blur()的问题

一个(非理想的)解决方法是:

<script type="text/javascript">
$(function() {
    $('#test').change(function() {
        $('body').focus();
    });
});
</script>

通过聚焦 HTML 文档将失去对选择输入字段的关注。

【讨论】:

  • 非 jQuery 版本中的两个错误:1) 不要在事件处理程序属性中使用 javascript: 前缀。该属性的值应该是纯 JavaScript。 2)您应该调用 select 对象的 blur() 方法,而不是窗口(这实际上就是您正在做的事情),如果您所拥有的内容在任何浏览器中都有效,我会感到惊讶。
  • 其实我觉得第二点我可能错了:我认为selects没有blur()方法。尽管如此,试图让整个窗口失去焦点似乎很奇怪。
  • 嗨,这与我们最终使用的最接近,即 body.blur() 或 document.body.blur()。谢谢!
【解决方案2】:
<select id="test" onchange="blur()">

你想模糊选择,而不是窗口(它充当全局对象,所以这与window.blur() 相同)。

<select id="test" onchange="this.blur();">

由于一个错误,在除 IE6 之外的所有版本中都可以使用。你可以通过关注其他事情来解决它:

<a href="#" id="x"></a>
<select id="test" onchange="var x= document.getElementById('x'); x.focus(); x.blur();">

但是!无论哪种方式,都不要这样做。您将破坏选择的键盘可访问性(因为按下向上/向下会立即发送更改事件)。这与被滥用为导航的下拉菜单所面临的问题相同。

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2015-10-16
    • 2012-10-17
    • 1970-01-01
    • 2012-05-30
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多