Javascript

フォーカスアウト・フォーカスインについて学ぶ! Javascript / jQuery超初心者の勉強

Javascript

Javascriptでフォーカスアウト制御をみかけたので、フォーカスイン含めて勉強しなおそうと思います。

Javascriptでのフォーカスアウト・フォーカスイン制御

htmlのonfocus属性とonblur属性を使用しています。

onfocus(フォーカスした時)とonblur(フォーカスが外れた時)を利用してJavascriptのメソッドを実行しています。

サンプルコード Javascript

<input type="text" id="testID" onfocus="focusFunction()" onblur="blurFunction()">
<script>
function focusFunction() {
  // フォーカスした時にinputのbackground-colorをyellowにする
document.getElementById("testID").style.background = "yellow";
}
function blurFunction() {
 // フォーカスが外れた時にinputのbackground-colorをwhiteにする
document.getElementById("testID").style.background = "white";
}
</script>

test用

以下のinputエリアにフォーカスインした時にinputのbackgroundが黄色になりフォーカスアウトした時に白に戻ります。

See the Pen focus change background by Nakamoto (@programmerlife) on CodePen.

サンプルコード Javascriptその2

せっかく作ったので、ほぼ内容同じです。フォーカスイン、アウト時にconsoleに文字が表示されます。とはいえわかりづらいので結局色も変えています。

<form>
<input type="text" id="testID2" value="" onfocus="focusIn();" onblur="focusOut()">
</form>
<script>
//ファンクションfocusIn()を設定
function focusIn(){
//コンソールにFocus Inを表示
 console.log("Focus In");
//色を白へ変更
document.getElementById("testID2").style.background = "white";
}
//ファンクションfocusOut()を設定
function focusOut(){
 //コンソールにFocus Outを表示
  console.log("Focus Out");
//色を黄色へ変更
document.getElementById("testID2").style.background = "yellow";
 }
</script>

test用

以下のinputにフォーカスするとコンソールにFocus In、フォーカスアウトするとFocus Outと表示されます。そしてフォーカスアウトした時にinputのbackgroundが黄色に変わります。

See the Pen focus console by Nakamoto (@programmerlife) on CodePen.

コンソールについてはこちらでまとめているので、興味のあるかたはこちらもどうぞ。

jQueryでのフォーカスアウト・フォーカスイン制御

<form>
<input type="text" name="testJQ">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){ //ドキュメントの準備ができたら
  $('input[name="testJQ"]').focus(function(){ // inputのnameがtestJQのエレメントがフォーカスインの時
    $(this).css("background-color", "yellow");  // inputのbackground-colorを黄色に
  });
  $('input[name="testJQ"]').blur(function(){ // inputのnameがtestJQのエレメントがフォーカスアウトの時
    $(this).css("background-color", "white");  // inputのbackground-colorを白に
  });
});
</script>

test用 jQuery

以下のinputエリアにフォーカスインした時にinputのbackgroundが黄色になりフォーカスアウトした時に白に戻ります。変化はJavascriptと同じでつまらないですね。

See the Pen Untitled by Nakamoto (@programmerlife) on CodePen.

おわり

参考サイト:https://www.w3schools.com/jsref/event_onblur.asp

HTML属性のonfocusを利用してalert()を実行しようとしたらchromeでalertの無限ループとなってしまいました。alertはonclickが良さそうと気づくまで時間を無駄にしてしまいました。blurの時は無限ループにならないっぽいのに不思議。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です