JavaScriptで開始から終了の日付チェックみたいな〜
開始と終了があり、今日以降から予約みたいなもののために考えました。
HTML
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <script type="text/javascript" src="inputYMDCheck.js"></script> </head> <body> <input type="text" id="before"/>から <input type="text" id="after"/>まで <button onClick="main()">予約</button> </body> </html>
JavaScript (inputYMDCheck.js)
/* inputYMDCheck.js 2011-01-11*/ function main(){ var beforeYMD=document.getElementById("before").value; var afterYMD=document.getElementById("after").value; if(!inputYMDCheck(beforeYMD,afterYMD)){ alert("日付エラー"); return; } alert(beforeYMD+'から'+afterYMD+'まで予約する準備ができました'); } function inputYMDCheck(beforeYMD,afterYMD){//予約日付チェック var flg=false; var dateCheck=new RegExp(/[2][0-9]{3}-[0-1][0-9]-[0-3][0-9]/); //2XXX年-0X月〜1X月-0X日〜3X日 if(!dateCheck.test(beforeYMD) || !dateCheck.test(afterYMD)){ return false; } var now=new Date(); nowYMD=now.getFullYear()+'-'+('0'+(now.getMonth()+1)).slice(-2)+'-'+now.getDate(); //現在日 if(dateCalc(nowYMD,beforeYMD)<0){//現在より前の予約開始(datepickerを使う場合なくてもよい) return false; } if(dateCalc(beforeYMD,afterYMD)<0){//予約前より予約後のほうが昔 return false; } return true; } function dateCalc(beforeYMD,afterYMD){ var isMSIE = /*@cc_on!@*/false; if(isMSIE){ var afterYMD=afterYMD.replace('-','/'); var beforeYMD=beforeYMD.replace('-','/'); } var d=Math.floor(Date.parse(afterYMD)-Date.parse(beforeYMD))/1000/60/60/24; return d; }
現在jQueryのdatepickerと併用して使うようにしています。
その場合、datepickerのほうでminDate:0を指定すると現在からの予約になるみたいです。
(minDateで過去,maxDateで未来を制限するかんじ)