説明
リアルタイムに入力された内容が指定された形式の時刻かどうかを調べるにはAdobe Spryフレームワークを利用すると簡単です。テキストフィールドのチェックを行うSpryValidationTextField.jsファイルと関連するスタイルシートファイル (SpryValidationTextField.css) を読み込みます。チェックしたいテキストフィールドを<span>タグで囲みID名を指定しておきます。さらに入力時に表示するメッセージを<span>タグで囲みスタイルシートのクラス名をtextfieldRequiredMsgにします。入力内容が不正だった場合のメッセージも同様に<span>タグを使いスタイルシートクラス名をtextfieldInvalidFormatMsgにします。
HTML文書の設定が終わったらスクリプトでチェックする対象となるテキストフィールドをSpry.Widget.ValidationTextField()で指定します。パラメータにはチェックする領域を示すID名、チェックする種類、いつチェックするかなどのオプションを指定します。時刻かどうかをチェックする場合には2番目のパラメータにtimeの文字を指定します。次にどのような時刻形式かどうかを3番目のformatオプションで指定します。時間はhh、分はmm、秒はssで示されます。hh:mm:ssであれば11:16:35 (11時16分35秒) の形式を受け付けることになります。また、タイムゾーンも許可する場合にはttを使って指定します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" href="SpryValidationTextField.css" type="text/css" media="all">
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script src="SpryValidationTextField.js" type="text/javascript"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>時刻以外が入力されたらメッセージを表示する</h1>
<form action="./check.cgi" method="get" id="mainForm" name="mainForm">
<span id="checkData1">
<input type="text" name="text1" id="text1">
<span class="textfieldRequiredMsg">HH:MM:SS形式で入れてください</span>
<span class="textfieldInvalidFormatMsg">HH:MM:SS形式以外は受け付けません</span>
</span>
<input type="submit" value="送信">
</form>
</body>
</html>
window.onload = function() {
new Spry.Widget.ValidationTextField("checkData1", "time",
{format:"hh:mm:ss", validateOn:["blur","change"]});
}