- ベストアンサー
セレクトボックスの値取得に関して
こんにちは。今、セレクトボックスの値取得に頭を悩ませています。 具体的には、(送迎バスの)到着時間、出発時間を入力してもらい、 到着時間が出発時間より早くないとアラートを出すような仕掛けを 作りたく思っています。以下のようなスクリプトを作ったのですが、 時間の計算がうまくいかないみたいです。至らぬ点など多々あるかと 思いますが、ご教授よろしくお願いいたします。 <html> <head><title>select_test</title> <script type="text/javascript"> function jikoku_chk(){ //到着時刻 arrive_time=eval(document.getElementsByName("HH1").selectedindex)*60+eval(document.getElementsByName("MM1").selectedindex); //出発時刻 depart_time=eval(document.getElementsByName("HH2").selectedindex)*60+eval(document.getElementsByName("MM2").selectedindex); if (arrive_time > depart_time){ alert("出発時刻は到着時刻以降でなければなりません"); }else{ alert("入力内容は適切です"); } </script> </head> <body> <form name="s_box" action="./select_test.html" onsubmit="jikoku_chk()"> 到着時間 <select name="HH1"> <option>00 <option>01 <option>02 </select> : <select name="MM1"> <option>00 <option>01 <option>02 </select> <br><br> 出発時間 <select name="HH2"> <option>00 <option>01 <option>02 </select> : <select name="MM2"> <option>00 <option>01 <option>02 </select> <br> <input type="submit" value="登録"> </form> </body> </html>
- みんなの回答 (3)
- 専門家の回答
お礼
ご回答ありがとうござました。 下記のとおり、作成しましたところ、正常動作が確認できました。 -------------------- function jikoku_chk(){ //到着時刻 arrive_time=eval(document.s_box.HH1.selectedIndex)*60+eval(document.s_box.MM1.selectedIndex); alert(arrive_time); //出発時刻 depart_time=eval(document.s_box.HH2.selectedIndex)*60+eval(document.s_box.MM2.selectedIndex); alert(depart_time); if (arrive_time > depart_time){ alert("出発時刻は到着時刻以降でなければなりません"); }else{ alert("入力内容は適切です"); } } -------------------- 追加で質問で恐縮ですが、SelectのnameをHH[1],MM[1],HH[2],MM[2]等とし、javascriptの部分を、以下のようにしたら、動かなくなりました。 function jikoku_chk(){ //到着時刻 arrive_time=eval(document.s_box.HH[1].selectedIndex)*60+eval(document.s_box.MM[1].selectedIndex); alert(arrive_time); //出発時刻 depart_time=eval(document.s_box.HH[2].selectedIndex)*60+eval(document.s_box.MM[2].selectedIndex); alert(depart_time); if (arrive_time > depart_time){ alert("出発時刻は到着時刻以降でなければなりません"); }else{ alert("入力内容は適切です"); } } ------------------ 本番環境では、チェックする行が多いので、Select文を上記のように配列風にPHPで自動生成し、javascriptの中でfor文でまわして、一行ずつ処理を行いたいのですが、このような方法は難しいのでしょうか?