HTML5で強化された入力フォーム。今まですべてをjavascriptなどでやってきたのを、ある程度の部分までHTML5の機能でカバーすることが可能です。
HTML5フォーム機能 サンプルコード
(10日で覚えるHTML5より)
<form> ID:<input type="text" id="userID" name="userID" required autofocus><br> 料理:<input type="text" id="menu" name="menu" list="menuList" autocomplete="on"><br> <datalist id="menuList"> <option value="海鮮丼">海鮮丼</option> <option value="海の幸と山の幸">海の幸と山の幸</option> <option value="海の幸づくし">海の幸づくし</option> <option value="山の幸づくし">山の幸づくし</option> <option value="高級あわび料理">高級あわび料理</option> <option value="高級寿司">高級寿司</option> <option value="うに丼">うに丼</option> <option value="うにいくら丼">うにいくら丼</option> <option value="季節料理">季節料理</option> <option value="季節の野菜料理">季節の野菜料理</option> <option value="季節の魚料理">季節の魚料理</option> </datalist> 予約日:<input type="date" id="resDay" name="resDay" required><br> 予約時間:<input type="time" id="resTime" name="resTime" required><br> 予約人数:<input type="number" id="resNumber" name="resNumber" min="1" max="20" required>(1-20人)<br> 部屋の色:<input type="color" id="roomColor" name="roomColor"><br> メール:<input type="email" id="mailAddress" name="mailAddress"><br> 電話番号:<input type="tel" id="telephone" name="telephone"><br> 空き室状況:<meter min="0" max="50" value="41" low="25" high="40" optimum="0">41部屋予約されています</meter><br> <input type="submit" value="送信"> </form>
今までのフォームとデータ内容確認スクリプトなど(カナリ以前)
<form action="★.cgi" method="post" onSubmit="return chkfrm()" name="Fid"> <input name="メールアドレス" onBlur="if(!addcheck()) alert('メールアドレスが正しくありません')"); > <input type="submit" value="確認/送信など"> </form> --- function addcheck(){ str1 = document.Fid.メールアドレス.value ; checkstr = str1.match(/^\S+@\S+\.\S+$/); if(!checkstr)return false; return true; } --- function chkfrm() { if (document.Fid.FIN_DAYCNT.value == ""){ alert('日数が未入力です'); return false;} if (document.Fid.FIN_DAYCNT.value == "0"){ alert('日数にゼロは指定できません'); return false;} if (document.Fid.FIN_DAYCNT.value == "0"){ alert('日数にゼロは指定できません'); return false;} if (document.Fid.FIN_DIRECTION.value == ""){ alert('送信方向が未入力です'); return false;} if (document.Fid.FIN_TITLE.value == ""){ alert('メール件名が未入力です'); return false;} if (document.Fid.FIN_RETURNCR.value == ""){ alert('返信文章が未入力です'); return false;} str = document.Fid.FIN_DAYCNT.value ; for (i=0; i<str.length; i++){ str = str.replace("0","0") ; str = str.replace("1","1") ; str = str.replace("2","2") ; str = str.replace("3","3") ; str = str.replace("4","4") ; str = str.replace("5","5") ; str = str.replace("6","6") ; str = str.replace("7","7") ; str = str.replace("8","8") ; str = str.replace("9","9") ; str = str.replace(" ","") ; str = str.replace(" ","") ; document.Fid.FIN_DAYCNT.value = str; c = str.charAt(i); if ("0123456789.".indexOf(c,0) < 0){alert("日数に数値以外が含まれてます"); return false;} } return true; }
フォーム:カウントアップ・カウントダウン
HTMLサンプル
<input type="button" value="カウントアップ" id="countUp"> <input type="button" value="カウントダウン" id="countDown"><br> 予約人数:<input type="number" id="resNumber" name="resNumber" value="1" min="1" max="20" required>(1-20人)
スクリプトサンプル
// 値の増減ボタン document.getElementById("countUp").addEventListener("click", function(){ document.getElementById("resTime").stepUp(1); }, true); document.getElementById("countDown").addEventListener("click", function(){ document.getElementById("resTime").stepDown(1); }, true);
プログレスバー
HTMLサンプル
予約状況:<progress id="resStatus" min="0" max="100" value="0">0%が予約済み</progress><br> <input type="button" id="resCheck" value="予約チェック"><br>
スクリプトサンプル
// 予約状況を調べるボタン document.getElementById("resCheck").addEventListener("click", function(){ var n = document.getElementById("resStatus").value; n = n + 10; document.getElementById("resStatus").value = n; ele.innerHTML = n; }, true);
演 習
1)上記のフォームをHTML(新規)に入れて、フォームを表示させてください。
2)カウントアップ、カウントダウンのJSを付け加えて、実施してください。
3)予約状況を調べるJSを追加して、プログレスバーの表示変更を実施してください。
4)カウントアップ、カウントダウンで、プログレスバーが変化するように、JSを更新してください。