0

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

4

2 回答 2

0

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

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

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

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

于 2013-03-19T18:54:14.750 回答
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.
    })
}
于 2013-03-20T19:37:09.867 回答