• ベストアンサー

ラジオボタンのValueを受け取りたい

 ある画面(formnn10.jsp)データベースから読込んだ抜粋データをテーブルに出力し、該当する情報を1件選択(パラメータ化)してsubmitボタンで次画面(formn11.jsp)へ送り、再度データベースを読み込み詳細の表示を行う処理を構築中です。 現在、選択はラジオボタンをループで作成し、valueでパラメータを与えています。 この値の一部をJavascriptで取り出し、ダイアログへ選択の確認メッセージとして表示したいのですが、'document.formnn10.parm_No.valueはNull又はオブジェクトではありません'とのエラーメッセージが表示されます。(parm_Noがラジオボタンのnameです。) デバッグを行わず、次画面formnn11に処理が移ると選択情報の詳細は表示される為、javascriptでの値の取り出し方が問題の様なのですが…。 formnn10.jspのテーブル表示部分のコーディングは次の通りです。 <% for(int j=0;ichiran2[j][0]!=null;j++){ out.println("<tr>") out.print(" <td align=\"center\">"); out.print("<INPUT type=\"radio\" name=\"parm_No\" value=\""+wkparm_No+"\>"); out.print("</td>") out.println("</tr>") javascript側のコーディングは次の通りです。 wkname = document.formnn10.parm_No.value.substring(8); こんな感じです。ここに未表示のファイル名他の不一致についてはとりあえず無さそうです(手打ちしているので誤打鍵御容赦)  現在はラジオボタン+submitの形式で選択していますが、現行の方法に固執する必要は無く変更可能です。  各行の横で対象指定を行い、Javascriptで値を拾い(ダイアログに表示出来)、formnn11.jspでparm_Noとして値を受取るにはどうすれば良いでしょうか。

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

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

ラジオボタンは、Javascriptでformに対してnameで取ると 各ラジオボタン(同じname)の配列(Array)で返されるようです。 ただし、ラジオボタンが1つだと、要素が1つの配列ではなく ラジオボタンそのものが返されるようです。 私のよくやる手は、別途hiddenを作る方法です。 まず、ラジオボタン(formに対してnameで取ったもの)を引数に 選択されたvalueを返すfunction、指定したvalueのラジオボタンを checkedにするfunctionなどを、共通的に作っておきます。 そして、別途作ったhiddenのvalueにラジオボタンで選択された valueを入れたり、逆にhiddenのvalueをラジオボタンに反映する といった動きを、submit時、onLoad時にJavascriptでやります。 そして、Servletと結びつけるのはhiddenの方にします。 ラジオボタンの選択されたvalueを送るサンプルです。 (動作確認はしてません) -------------- <form method="POST" action="formnn11.jsp" onSubmit="copyRadioToHidden(this)"> <%   for(int j = 0 ; ichiran2[j][0] != null ; j++) { %>  <input type="radio" name="parm_No_Radio" value="<%= j %>"> <%  } %>  <input type="hidden"parm_No" value="">  <input type="submit"> </form> -------------- function copyRadioToHidden(form) {   // ラジオボタンの選択されたvalueをhiddenにコピー   form.parm_No.value = getRadioValue(form.parm_No_Radio); } function getRadioValue(radio) {   if(radio.length) {     // ラジオボタンが複数個     for(var i = 0 ; i < radio.length ; i++) {       if(radio[i].checked == true) {         return radio[i].value;       }     }   }   else if(radio.value) {     // ラジオボタンが1個     return radio.value;   }   else {     // ラジオボタンがない     return "";   } }

Adenau
質問者

お礼

丁寧な説明迄有難う御座いました。 授受しなければならないパラメータを増やしたく無い (後々の理解楽そうな)ので、今回はこちらの方法を使わせて頂きます。 有難う御座いました。

Adenau
質問者

補足

 こちらもcheckdと値を別で処理する様ですね。 パラメータを増やさず値を渡せるのは魅力的です。 こちらも試してみます。

その他の回答 (1)

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.1

javascript側で ボタン選択回数分ループで回して チェックされた値を受け取ってからJSPに渡すと いいと思います。

参考URL:
http://www.openspc2.org/reibun/javascript/form/005/index.html
Adenau
質問者

お礼

回答有難うございました。 ちょっとしたアドリブの利かせ方で取得出来るとは… 非常に勉強になりました。

Adenau
質問者

補足

 字面を読んでしっくり来てなかったのですが、リンクを見て(最初気付いてませんでした、すいません)納得しました。  checkedと値の取り出しを分けて行うという事ですね。一度組み込んで見ます。