Javascriptでブラウザー上で入力中のエリアをわかりやすくするためにフォーカスのあるテキストボックスの背景色を変えてみます。
HTMLで入力中の背景色を変える
よくあるパターンで入力中のエリアをわかりやすくするためにフォーカスのあるテキストボックスの背景色を変えてみます。
背景色を変えるには「style」の「backgroundColor」を操作する
背景色を変えるにはその部品の「style」にある「backgroundColor」をJavascriptで書き変えます。
objct名.style.backgroundColor = '表示したい背景色' ;
実際に変更する際の処理は
<SCRIPT language="JavaScript"> //入力中のテキストボックスの背景色を設定 function editColor( item_name ) { var item =document.getElementsByName( item_name ) ; item[ 0 ].style.backgroundColor = '#FFFF66' ; } </SCRIPT>
のように「backgroundColor」に変更したい色を設定します。
色を元に戻すためにもう一つ関数を用意します。
<SCRIPT language="JavaScript"> //通常のテキストボックスの背景色を設定 function defaultColor( item_name ) { var item = document.getElementsByName( item_name ) ; item[ 0 ].style.backgroundColor = '#FFFFFF' ; } </SCRIPT>
入力テキストボックスでフォーカスの有無を取得
入力テキストボックス側では「onFocusイベント」と「onBlurイベント」を使って背景色を操作します。
<INPUT type="text" name="textbox1" onFocus="editColor(this.name)" onBlur="defaultColor(this.name)">
実際にHTMLを作成して実行
実際にHTMLを作成して入力中のテキストボックスの背景色を変更します。
<HTML> <HEAD> <SCRIPT language="JavaScript"> //入力中のテキストボックスの背景色を設定 function editColor( item_name ) { var item = document.getElementsByName( item_name ) ; item[ 0 ].style.backgroundColor = '##FFFF66' ; } //通常のテキストボックスの背景色を設定 function defaultColor( item_name ) { var item = document.getElementsByName( item_name ) ; item[ 0 ].style.backgroundColor = '#FFFFFF' ; } </SCRIPT> </HEAD> <BODY> <FORM name="mainForm"> <INPUT type="text" name="textbox1" onFocus="editColor(this.name)" onBlur="defaultColor(this.name)"> <BR> <INPUT type="text" name="textbox2" onFocus="editColor(this.name)" onBlur="defaultColor(this.name)"> </FORM> </BODY> </HTML>
もっとシンプルにすると
editColor()関数とdefaultColor()にして
<SCRIPT language="JavaScript"> //通常のテキストボックスの背景色を設定 function setInputBackGroundColor( item_name, flg ) { var item = document.getElementsByName( item_name ) ; if( flg == 'on'){ item[ 0 ].style.backgroundColor = '#FFFF66' ; } else{ item[ 0 ].style.backgroundColor = '#FFFFFF' ; } } </SCRIPT>
にして呼び出す側で
<INPUT type="text" name="textbox1" onFocus="setInputBackGroundColor(this.name,'on')" onBlur="setInputBackGroundColor(this.name,'off')">
とするのも良いでしょう。