Internet Explorer在Keypress上触发更改事件

时间:2013-03-19 06:17:23

标签: javascript internet-explorer drop-down-menu onchange

使用箭头导航菜单时,IE会在选择菜单上触发更改事件。在非IE浏览器中不是这种情况。非IE浏览器仅在单击选项时触发事件,或者在使用箭头导航到项目后按Enter键。有没有办法解决这个问题?我需要在用键导航时不要触发事件。

2 个答案:

答案 0 :(得分:0)

如果可以的话,我会添加自己的更改事件侦听器并以这种方式处理。在不知道所有细节的情况下很难说,但我先看一下,因为事件无法取消。除了这种方法之外,IE会在值发生变化时触发事件,因此您无法做到这一点。这是IE中change/onchange的链接。它实际上在文档中说明了这一点。

要调用此事件,请执行以下操作之一:

  • 使用鼠标或键盘导航在选择对象中选择其他选项。
  • 更改文本区域中的文本,然后导航出对象。

它很臭,但是在使用选择字段时必须考虑其中一个。

答案 1 :(得分:0)

适用于我的情况的解决方案如下。

  • 绑定到blur事件而不是change事件。

这引入了另一个问题,当我最初加载页面时,select会触发change事件,我需要blur绑定中的代码才能生效。绑定到change并使其触发blur会导致大量递归。解决方案是创建一个在启动时运行的init函数。

initData : function(){
    var t = this,
        formSelects = 'select';

    jQuery.each(formSelects, function(){
        // do my code here that normally happens in blur.
    })
}