• ベストアンサー

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ボックス両方がきちんと選択されている場合はエラーは起きません。

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

  • ベストアンサー
  • Shinoa
  • ベストアンサー率92% (12/13)
回答No.4

単純にこんな感じではどうでしょう? <Form>のonSubmit時に、submitData()関数を実行させるだけです。 参考になりますか? function submitData(){ document.forms[0].B.disabled=false; } <FORM action="○○○.html" onSubmit="submitData()">

noname#15844
質問者

お礼

度々のご回答、有難う御座います。 非常に参考になります。

その他の回答 (3)

  • Shinoa
  • ベストアンサー率92% (12/13)
回答No.3

『disabled』が使いたいのでしたら、送信する直前に  document.forms[0].B.disabled=false; を実行してから送信するって言うのはどうでしょう? 一番簡単だと思うのですが、少しでも参考になれば幸いです。

noname#15844
質問者

補足

回答有難う御座いました。 送信する直前にdocument.forms[0].B.disabled=false;を実行するというのは、具体的にどのように記述すれば良いのでしょうか?送信ボタンの部分に手を加える形ですか?

  • potedora
  • ベストアンサー率47% (66/140)
回答No.2

#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にすればよいと思います。

noname#15844
質問者

お礼

再びのご回答有難う御座いました。さっそく試してみます。

  • potedora
  • ベストアンサー率47% (66/140)
回答No.1

disabledをtrueにしているからだと思います。 disabledの処理を削除してやってみてください。 もし、Aでa2を選択したときにBがb1しか選択できない ようにしたいのであれば、BでもonChangeを 呼べば実現できます。

noname#15844
質問者

補足

回答有難う御座いました。 disabledは出来れば使いたいんですが無理ですか?理想としては、a2を選択時にボックスBが白黒になって操作不可能になり、その状態で送信するとサーブレットにa2とb1の二つの情報を渡せるという形です。

関連するQ&A