- ベストアンサー
HTMLのコンボボックスとの関連
HTMLの同ページ内にコンボボックスAとコンボボックスBがあるとして、 <!-- JavaScript部------ --> <script language="javascript"> <!--// function cmdCtr() { if (document.forms[0].A.value=='a2'){ document.forms[0].B.disabled=true; document.forms[0].B.selectedIndex=0; document.forms[0].B.value="b1"; }else{ document.forms[0].B.disabled=false; } } //--> </script> <!-- HTML部----------- --> <FORM> <SELECT name="A" onChange="cmdCtr();"> <OPTION value="a1">a1</OPTION> <OPTION value="a2">a2</OPTION> <OPTION value="a3">a3</OPTION> </SELECT> <SELECT name="B"> <OPTION value="b1">b1</OPTION> <OPTION value="b2">b2</OPTION> <OPTION value="b3">b3</OPTION> </SELECT> </FORM> 以上のようなJavaScriptを記述しました。しかし、上記の流れ通りならばa2を選択するとBボックスが選択出来なくなり、Bボックスのb1の値が自動でサーブレットに飛ぶはずなのですが、エラーが起きてしまいます。書き方が悪いのでしょうか? ちなみに、AボックスBボックス両方がきちんと選択されている場合はエラーは起きません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
単純にこんな感じではどうでしょう? <Form>のonSubmit時に、submitData()関数を実行させるだけです。 参考になりますか? function submitData(){ document.forms[0].B.disabled=false; } <FORM action="○○○.html" onSubmit="submitData()">
その他の回答 (3)
- Shinoa
- ベストアンサー率92% (12/13)
『disabled』が使いたいのでしたら、送信する直前に document.forms[0].B.disabled=false; を実行してから送信するって言うのはどうでしょう? 一番簡単だと思うのですが、少しでも参考になれば幸いです。
補足
回答有難う御座いました。 送信する直前にdocument.forms[0].B.disabled=false;を実行するというのは、具体的にどのように記述すれば良いのでしょうか?送信ボタンの部分に手を加える形ですか?
- potedora
- ベストアンサー率47% (66/140)
#1です。 hiddenを使用して変数を設定すれば可能です。 例えば <input type="hidden" name="HB" value=""> のような行をFORMに追加しておき、 サーブレットへ移行するときのイベントに document.forms[0].HB.value = document.forms[0].B.value を実行すればサーブレットにはAの値とHB(=B)の値が 渡ります。 サーブレット側をA,Bにしたい場合は、hiddenをB、 ボックスをHBにすればよいと思います。
お礼
再びのご回答有難う御座いました。さっそく試してみます。
- potedora
- ベストアンサー率47% (66/140)
disabledをtrueにしているからだと思います。 disabledの処理を削除してやってみてください。 もし、Aでa2を選択したときにBがb1しか選択できない ようにしたいのであれば、BでもonChangeを 呼べば実現できます。
補足
回答有難う御座いました。 disabledは出来れば使いたいんですが無理ですか?理想としては、a2を選択時にボックスBが白黒になって操作不可能になり、その状態で送信するとサーブレットにa2とb1の二つの情報を渡せるという形です。
お礼
度々のご回答、有難う御座います。 非常に参考になります。