onblur とは、要素が入力フォーカスを失ったときに実行される JavaScript を指定する HTML 属性である。入力された値をスクリプトで検証するような場合に利用できる。
HTMLで blur イベントのハンドラを指定する。
<tag onblur="javascript">
onblur 属性で関数を呼び出す場合、第1引数にイベント・オブジェクトを渡すことができる。
<tag onblur="func(arguments[0])">
onblur 属性で関数を呼び出す場合、第2引数にエレメント・オブジェクトを渡すことができる。
<tag onblur="func(arguments[0], this)">
<label for="last_name">Last name:</label>
<input type="text" id="last_name" onblur="example(arguments[0], this)">
<label for="first_name">First name:</label>
<input type="text" id="first_name" onblur="example(arguments[0], this)">
<p><span id="msg"></span></p>
<script>
function example(event, element) {
document.getElementById('msg').innerHTML = element.id + 'がフォーカスを失いました。'
}
</script>
イベント:
Tab キーを押してリンクにフォーカスを合わせて、さらに Tab キーを押してフォーカスを失うと、JavaScriptが実行される。
次の要素(タグ)に対してonblur属性を指定することができる。
同期
blur イベントはバブリング(下位の要素から上位の要素へ伝播)しない。
blur イベントはキャンセルできない。
blur イベントにデフォルトの動作は無い。
次に示すイベント・ハンドラ・コンテンツ属性は、任意のHTML要素に指定することができる。
onblur 属性は省略可能である。
HTML の onblur 属性の代わりに、JavaScript から blur イベントのハンドラを設定することもできる。
<input type="text" id="example">
<script>
document.getElementById('example').onblur = function(){
/* do somthing */
}
</script>
JavaScript からイベントリスナーを登録する方法もある。
<input type="text" id="example">
<script>
document.getElementById('example').addEventListener('blur', function(){
/* do somthing */
)
</script>
blur のイベントオブジェクトは、FocusEvent インタフェースを実装している。
HTML の onblur 属性の代わりに、jQuery から blur イベントのハンドラを設定することもできる。
<input type="text" id="example">
<script>
$('#example').on('blur', function(event){
/* do somthing */
})
</script>
Web Hypertext Application Technology Working Group (2022) "Web application APIs" HTML Living Standard
World Wide Web Consortium (2021) UI Events