アプリ版:「スタンプのみでお礼する」機能のリリースについて

 ある画面(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として値を受取るにはどうすれば良いでしょうか。

A 回答 (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 "";
  }
}

この回答への補足

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

補足日時:2005/02/03 10:22
    • good
    • 0
この回答へのお礼

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

有難う御座いました。

お礼日時:2005/02/07 15:04

javascript側で


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

参考URL:http://www.openspc2.org/reibun/javascript/form/0 …

この回答への補足

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

補足日時:2005/02/03 09:46
    • good
    • 0
この回答へのお礼

回答有難うございました。

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

お礼日時:2005/02/07 15:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!