年月日が入力されたら自動的に曜日を表示する(onKeydown)


動作ブラウザ 【 IE:4.0   NN:6.0
Internet Explorer Netscape Navigator Firefox Opera iCab Safari
3.0x 4.0x 4.5 5.0x 5.5 6.0 2.0x 3.0x 4.0x 4.x 6.0 7.0 8.0 1.0 7.x 8.x 2.x 1.x 2.x
Windows × - × × × × -
Macintosh × - × × × × - ×
UNIX - - - - - × × × × - -

ポイント dObj = new Date(); dObj.setFullYear(aY); dObj.setMonth(aM - 1); dObj.setDate(aD); result = "日月火水木金土".charAt(dObj.getDay())+"曜日";
説  明 年月日が入力されたら曜日を自動的に表示するにはonKeydownイベント(またはonKeyUpイベント)を利用します。キー入力が発生した際に、Dateオブジェクトを作成します。入力された年月日をsetFullYear, setMonth, setDateでDateオブジェクトに設定します。この後にgetDayで曜日の番号を読み出せば指定年月日の曜日を得ることができます。
サンプル <html> <head> <title>日付を入れると自動的に曜日を表示する</title> <script type="text/javascript"><!-- function getDayInfo(fObj) { aY = parseInt(fObj.aYear.value); aM = parseInt(fObj.aMonth.value); aD = fObj.aDate.value; result = ""; numStr = "0123456789"; if ( ((aY >= 1970) && (aY < 2200)) && ((aM > 0) && (aM < 13)) && ((aD > 0) && (aD < 32)) ) { dObj = new Date(); dObj.setFullYear(aY); dObj.setMonth(aM - 1); dObj.setDate(aD); result = "日月火水木金土".charAt(dObj.getDay())+"曜日"; } fObj.aDay.value = result; } // --></script> </head> <body> <form> 西暦<input type="text" name="aYear" size="5" value="" onKeydown="getDayInfo(this.form)">年 <input type="text" name="aMonth" size="3" value="" onKeydown="getDayInfo(this.form)">月 <input type="text" name="aDate" size="3" value="" onKeydown="getDayInfo(this.form)">日 <input type="text" name="aDay" size="7" value=""> </form> </body> </html>
補足説明 Windows版IE4〜6、Mac版Opera 6ではキーが押された後に他のキーを押さないと入力した値が正しく反映されません。これはonKeydown、onkeyUpイベントとも同様です。iCabでは曜日が文字化けします。Netscape 4では正常に動作しません。

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA