Webアプリケーションでは入力妥当性検査を Javascript によって行う。
Webサイトの会員登録フォームでよく見られる、入力内容にエラーがあれば
といったような動作も Javascript によるものである。
この動作のうち、エラーダイアログの表示については「 89. ALERT内での改行方法 」で
紹介している通りだが、入力フォームの背景色についてはどのように変更するのであろうか?
変更の方法は色々あるが、ここでは HTML のスタイルを変更する方法を紹介しよう。
スタイルの変更にはもちろん Javascript を利用する。
HTML内の要素の styleプロパティへアクセスして内容を書き換えるのである。
例えばHTML内へ、
<input type="text" id="SHCODE">
次のような <input>が存在した場合には、次のようにに記述することで
<input> の style プロパティへアクセスできる。
document.getElementById('SHCODE').style.(スタイルのプロパティ名)
背景色を変更するにはプロパティ:backgroundColor を変更すればよいので、
document.getElementById('SHCODE').style.backgroundColor
となる。
このプロパティに対して、カラーネーム もしくは #000000 〜 #FFFFFF からなる
カラーコードを指定することで背景色を自由に変更していくのだ。
例えば背景色を赤色にするなら次のようにカラーネーム:RED を記述すればよい。
document.getElementById('SHCODE').style.backgroundColor = 'RED';
これを入力エラーが発生したフォームへ指定するだけで、簡単に背景色を変更できる。
実際に変更の処理を行う入力チェックのサンプルを紹介する。
必要最低限のシンプルなプログラムではあるが、基本的な動作はこれだけで実現可能である。
フォームへ [ 全角文字 ] を入力してフォーカスを外してください。
商品コード:
<html>
<head>
:
:
<script language="JavaScript">
function chkFrm(val){
//フォームの色を初期値の 白 に戻す
document.getElementById('SHCODE').style.backgroundColor = '#FFFFFF';
//値のチェック
if(val.match(/[^0-9a-zA-Z]/g)){
//半角英数以外の場合は背景色を 薄赤 へ変更
document.getElementById('SHCODE').style.backgroundColor = 'mistyrose';
alert('入力内容:'+val+'\n半角英数で入力してください。');
}else{
alert('入力内容:'+val+'\n正しく入力されています。');
}
}
</script>
</head>
<body>
:
:
商品コード<input type="text" id="SHCODE" onchange="chkFrm(this.value)">
:
</form>
</body>
</html>
次に5250画面のようなエラーフィールドの反転表示も紹介しよう。
反転表示の場合は、背景色だけでなく 文字色 も変更してやればよい。
文字色のプロパティ:color なので、
document.getElementById('SHCODE').style.color
に背景色同様カラーネーム もしくは #000000 〜 #FFFFFF からなるカラーコードを指定すればよい。
フォームへ [ 全角文字 ] を入力してフォーカスを外してください。
商品コード:
<html>
<head>
:
:
<script language="JavaScript">
function chkFrm2(val){
//フォームの背景色を初期値の 白 に戻す
document.getElementById('SHCODE2').style.backgroundColor = '#FFFFFF';
//フォームの文字色を初期値の 黒 に戻す
document.getElementById('SHCODE2').style.color = '#000000';
//値のチェック
if(val.match(/[^0-9a-zA-Z]/g)){
//半角英数以外の場合は背景色を 青 へ変更
document.getElementById('SHCODE2').style.backgroundColor = '#316AC5';
//半角英数以外の場合は文字色を 白 へ変更
document.getElementById('SHCODE2').style.color = '#FFFFFF';
alert('入力内容:'+val+'\n半角英数で入力してください。');
}else{
alert('入力内容:'+val+'\n正しく入力されています。');
}
}
</script>
</head>
<body>
:
:
商品コード<input type="text" id="SHCODE2" onchange="chkFrm2(this.value)">
:
</form>
</body>
</html>