単純な HTML 入力フィールドを考えてみましょう
<input type="text" onblur='alert("hello");' />
マウスがこの入力フィールドにあり、ブラウザー (Chrome、IE など) で新しいタブを開こうとすると、onblur イベントがトリガーされます。そのような方法で onblur イベントをトリガーしたくありません。どうすればこれを回避できますか?
単純な HTML 入力フィールドを考えてみましょう
<input type="text" onblur='alert("hello");' />
マウスがこの入力フィールドにあり、ブラウザー (Chrome、IE など) で新しいタブを開こうとすると、onblur イベントがトリガーされます。そのような方法で onblur イベントをトリガーしたくありません。どうすればこれを回避できますか?
document.activeElement
要素がDOMで実際にフォーカスを失ったかどうかを確認するために使用できます。(ブラウザの互換性もかなり広いです。)
コードは次のようになります。
HTML
<input type="text" onblur='blurred(this);' />
JS
function blurred(elem) {
if (elem != document.activeElement) {
alert("Bye !");
}
}
この短いデモも参照してください。