こんにちは、今回は、
javascriptのイベントリスナーである
「blur,focusout」でフォーカスを外すときにクリックした要素を取得する方法を記します。
使用例は、
inputからフォーカスを外した場合、input要素を消す。
ただし、特定のボタンを押した場合は、input要素を消さない。
といった感じです。
やり方は、event.relatedTargetでクリックした要素を取得できます。
blur、focusoutイベントのrelatedTargetがクリックした要素です。
ただし、あくまでイベントに関連する別の要素が取得できるだけです。
この”関連する”のレベルがわかりませんが、ボタンに関しては要素取得できました。
そのため、取得できない場合は、null
取得できた場合は、どの要素かを判定して続きの処理を作成するとよいと思います。
<input type="text" blur="focusout(e)">
<button >追加</button
<script>
function focusout(e){
console.log(e.relatedTarget);
}
</script>
//<button>追加</button>
上記のようにフォーカスが外れたときに実行するイベントに対して適用させます。
このように使えますね。
<div id="inputWrap">
<input type="text" id="input" blur="focusout(e)">
<button onclick="add()" id="addBtn">追加</button>
</div>
<script>
function foucusout(e){
var clickElment = e.relatedTarget;
if(clickElement != null && clickElement.id == "addBtn" ){
return false;
}
document.getElementById("inputWrap").remove();
}
function add(){
//追加処理
}
</script>
以上です。






コメント