0

当浏览器不支持 jquery 事件时,我想向服务器发送错误消息。例如,chrome 浏览器中的单选按钮不会触发 blur() 事件。我如何识别这一点并将错误消息发送到服务器?

更新

我在单选按钮上尝试了 Modernizr.hasEvent 以进行模糊事件。即使它返回真正的模糊事件,谷歌浏览器中也没有被调用。在谷歌浏览器中尝试下面的 jsfiddle。

html

<input type = 'radio' id = 'r1' name = 'r1' value = 'R1'>R1</input>
<input type = 'radio' id = 'r2' name = 'r1' Value = 'R2'>R2</input>
<input type = 'text' id = 'r3'  Value = ''></input>

js

alert(Modernizr.hasEvent('blur',$('#r1')));
alert(Modernizr.hasEvent('blur',$('#r3')));
$('#r1').blur(function(){
  alert('blur is called')
});
$('#r3').blur(function(){
  alert('blur is called')
});

http://jsfiddle.net/nUN8k/23/

4

1 回答 1

2

chrome 的问题不在于它不支持blur单选按钮。问题是单选按钮从一开始就没有获得焦点。

在你的小提琴中试试这个:

测试1:

  • 点击 R1
  • 点击 R2
  • 点击离开

该事件不会触发,但也没有显示焦点(橙色边框)。

测试 2:

  • 点击 R3
  • 按 Shift+tab(并关闭模糊警报)。R2 应该被关注但不被选中。
  • 按左键。R1 被选中并聚焦。
  • 点击离开。R1 注册了一个模糊事件。

因此,Chrome 支持该事件-只是它不会在您期望的时候触发。

解决方法是在单击单选按钮时手动聚焦,以便获得跨浏览器一致(不仅仅是有效)的行为:

$("input").click(function(){
    $(this).focus()
})

http://jsfiddle.net/nUN8k/24/

测试——我没有检查它是否有效,我不知道它是否在modernizr中实现——将是单击一个隐藏的输入并查看它是否获得焦点。但是,可能会有一些误报(误认为“不要关注隐藏元素等”)......

于 2013-01-12T11:37:06.463 回答