• ベストアンサー

選択時間の正当性チェックについて

こんにちは。質問をさせてください。 画面にリストボックスが5個あるとします。 それぞれ、 年(2003,2004,2005) 月(01,02,03,・・・,12) 日(01,02,03,・・・,31) 時(00,01,02,・・・,23) 分(00,01,02・・・,59) です。 それと判定するボタンがあるとします。 リストボックスの選択された日付・時間が現在の日付・時間以前の ものならダイアログで”NG”、そうでないなら”OK”と表示したい と考えています。 ちなみに現在が2003年3月13日16時54分で、 選択された日付・日時が2003/3/13/16/54ならば”NG”表示とします。 また、選択された日付が存在しないもの(2003/2/31/10/10)なら ”ERROR”と表示したいと考えています。 PHPなら作成できたのですが、 JavaScriptではどう作成していいかわかりません。 ご指導宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

現在日時と入力された情報のDateオブジェクトを生成し、これを比較すればOKです。 以下サンプル # スクリプト部 function check(f) {   var now = new Date();   var chk = new Date(     f.year.options[ f.year.selectedIndex ].text,     f.mon.options[ f.mon.selectedIndex ].text - 1,     f.day.options[ f.day.selectedIndex ].text,     f.hour.options[ f.hour.selectedIndex ].text,     f.min.options[ f.min.selectedIndex ].text   );   if (chk < now) alert("OLD");   else alert("OK"); } # FORM部 <form> <select name="year"><option>2003<option>2004<option>2005</select> / <select name="mon"><option>2<option>3<option>4</select> / <select name="day"><option>12<option>13<option>14</select><br> <select name="hour"><option>12<option>15<option>18<option>21</select> : <select name="min"><option>0<option>15<option>30<option>45</select> <input type="button" value="CHECK" onClick="check(this.form)"> </form> ・check関数を呼び出す時に、フォームオブジェクトを渡しています。 ・Dateオブジェクトの生成では、引数を年、月(0~11)、日、時、分、秒の順で指定します。  何も指定しないと現時刻となります。 ・optionタグには value を指定していないので、.text で 2003 などの文字列を取得しています。(valueがあれば .value でも可) その他不明な点があったら、補足ください。

toopeaan
質問者

お礼

早速の返信ありがとうございました。 返信が遅くなり失礼しました。 上記を参考に作成してできました。 大変感謝です。 また何かありましたら、宜しくお願い致します。

その他の回答 (2)

  • mirurin
  • ベストアンサー率43% (48/111)
回答No.3

> また、選択された日付が存在しないもの(2003/2/31/10/10)なら > ”ERROR”と表示したいと考えています。 4,6,9,11月なら30日まで、2月なら28日か29日までで、 それ以外ならエラーを出します。 <SCRIPT> <!-- // 月の日数 nissu = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31); function check(f) { yy_val = f.year.value; mm_val = f.mon.value; dd_val = f.day.value; // 閏年のチェック if (((yy_val % 4 == 0) && (yy_val % 100 != 0)) || (yy_val % 400 == 0)) nissu[2] = 29; else nissu[2] = 28; if (dd_val > nissu[mm_val]) alert("error"); } //--> </SCRIPT>

toopeaan
質問者

お礼

早速の回答ありがとうございます。 返信が遅れてすみませんでした。 なるほど納得です。 ありがとうございました。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

JavaScriptでやるのでは甘いのでは? PHPで可能ならそちらを利用した方がよいと思います。 JavaScriptキャンセルした環境では意味ありませんので。

toopeaan
質問者

補足

JavaScriptでどうかいていいのかわからないので 質問をしています。

関連するQ&A