0

jquery イベントがブラウザでサポートされていない場合に、サーバーにエラー メッセージを送信したいと考えています。たとえば、blur() イベントは、chrome ブラウザーのラジオ ボタンに対してトリガーされません。これを特定してサーバーにエラー メッセージを送信するにはどうすればよいですか?

アップデート

ぼかしイベントのラジオ ボタンで Modernizr.hasEvent を試しました。真のぼかしイベントが返されますが、Google chrome で呼び出されません。Google chrome で以下の 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

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 に答える