ラジオボタンでフォームの送信先を切り替える

このQ&Aのポイント
  • ラジオボタンを使用して、フォームの送信先を切り替える方法について教えてください。現在、一方の送信ボタンはうまく切り替えられていますが、もう一方の送信ボタンが無効のままになることがあります。両方の送信ボタンを切り替えるためには、どのような記述が必要ですか?
  • ラジオボタンを使用して、フォームの送信先を切り替える方法について教えてください。一方の送信ボタンは正しく切り替えられますが、もう一方の送信ボタンは無効のままになってしまいます。両方の送信ボタンを切り替えるためのフォームの記述方法を教えてください。
  • ラジオボタンを使用して、フォームの送信先を切り替える方法について教えてください。現在、一方の送信ボタンは正しく切り替えられますが、もう一方の送信ボタンが無効のままになる場合があります。両方の送信ボタンを切り替える方法を教えてください。
回答を見る
  • ベストアンサー

ラジオボタンでフォームの送信先を切り替える

<script type="text/javascript"> <!-- function setDisabledTextbox(F,N1,N2,N3) { if(N1 == "OrderPayment0") { F[N2].disabled = true; F[N3].disabled = false; } else { F[N2].disabled = false; F[N3].disabled = true; } } //--> </script> //フォームの1の記述 <form method="post" action="送信先1"> //ラジオボタン1の記述 <input type="radio" name="payment1" value="値1" onclick="setDisabledTextbox(this.form,this.id,'tbox0','tbox1')" <?php if($payment_name == "値1") echo "checked"; ?> id="OrderPayment0" /> <label for="OrderPayment0">値1</label><br /> //ラジオボタン2の記述 <input type="radio" name="payment2" value="値2" onclick="setDisabledTextbox(this.form,this.id,'tbox0','tbox1')" <?php if($payment_name == "値2") echo "checked"; ?> id="OrderPayment1" /> <label for="OrderPayment1">値2</label><br /> 送信1の入力フォームの記述 <input type="submit" name="tbox0" value="送信1" disabled /> </form> //フォームの2の記述 <form method="post" action="送信先2"> 送信2の入力フォームの記述 <input type="submit" name="tbox1" value="送信2" disabled /> </form> 上記の記述で、最初、送信ボタン1及び送信ボタン2をdisabled状態にしておいて、ラジオボタンの1が押されたら送信ボタンの1を活性化、ラジオボタンの2を押したら送信ボタンの2を活性化するというように切り替えたいのですが、今のところ送信ボタンの1の切り替えはうまくいっているのですが、送信ボタンの2の方がdisabledされたままにまります。フォームの有効範囲の問題かな?と思って、ラジオボタンの2の記述をフォームの2の記述の方に移してみたりしたのですが、結果は同じようです。 両方とも切り替えるようにするには、どのように記述すればよいのでしょうか? 御教示願えればと思います。

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

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

>onclick="setDisabledTextbox(this.form,this.id,'tbox0','tbox1')" のthis.formはフォーム1を指しますよね? tbox1はフォーム1には存在しないのですから、 >F[N3].disabled = false; >F[N3].disabled = true; としても何も変更されません、というかエラーになっていると思うのですが。 tbox1を操作したいのであれば、フォーム2のtbox1を参照するようにしないといけません。 ちなみに、 disabled = true; とすると無効化されるのですが、認識は合っていますか? なんだか逆に書いているように思います。

tmiyoshi
質問者

お礼

御指摘、ありがとうございました。 <script type="text/javascript"> <!-- function setDisabledTextbox(F1,F2,ID,N1,N2) { if(ID == "OrderPayment0") { F2[N2].disabled = false; F1[N1].disabled = true; } else { F2[N2].disabled = true; F1[N1].disabled = false; } } //--> </script> //フォームの1の記述 <form method="post" action="送信先1"> //ラジオボタン1の記述 <input type="radio" name="data[Order][payment]" value="値1" onclick="setDisabledTextbox(document.forms[0],document.forms[1],this.id,'tbox0','tbox1')" <?php if($payment_name == "値1") echo "checked"; ?> id="OrderPayment0" /> <label for="OrderPayment0">値1</label><br /> //ラジオボタン2の記述 <input type="radio" name="data[Order][payment]" value="値2" onclick="setDisabledTextbox(document.forms[0],document.forms[1],this.id,'tbox0','tbox1')" <?php if($payment_name == "値2") echo "checked"; ?> id="OrderPayment1" /> <label for="OrderPayment1">値2</label><br /> 送信1の入力フォームの記述 <input type="submit" name="tbox0" value="送信1" disabled /> </form> //フォームの2の記述 <form method="post" action="送信先2"> 送信2の入力フォームの記述 <input type="submit" name="tbox1" value="送信2" disabled /> </form> でうまくいくようになりました。

関連するQ&A

  • ラジオボタンについて

    つまらない質問ですがどうか教えてください。 <form name="myform"> ・ ・ ・ <INPUT TYPE="RADIO" NAME="R1" VALUE="1">関連あり</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="2">関連なし</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="3">不明</INPUT> </form> 上記のようなラジオボタンを作ったのですが、 このラジオボタンのチェックされた値を取得するには document.myForm.cGyoumu.value ではできないのでしょうか? LOOPさせながらdocument.myForm.elements(i).checked で探さないと取得できないのでしょうか? 同じフォーム内にラジオボタンが複数あるため、 この方法はあまりやりたくありません。 ほかに方法がありましたら、どうか教えてください。

  • ボタン別でフォームの送信先を変えたい

    同じ場所に3つある今のフォームを1つにまとめたいのですが、 「ラジオボタン」でやるのではなく「submitボタン」によって送信先の振り分けはできないのでしょうか? CGIなどを使って一旦クッションを置くのは問題ないです。何か参考になるサイトさんとかありましたら教えてください。 <form action="1.php" method="get" class="form" target="a" name="1"> <input type="hidden" name="s" value=90 /> <input type="hidden" name="t" value="e" /> <input type="text" name="moji" value="" size="8" /> <input type="submit" name="button" value="検索" /> </form> <form action="http://e.php" method="get" name="2" target="a"> <input type="hidden" name="test" value=et /> <input type="text" name="77" value="" size="8" /> <input type="submit" value="検索2" class="button" /> </form> <form action="http://8.cgi" method="get" target="a"> <input type="text" size="8" name="q" value="" /> <input type="submit" value="検索3" class="button" /> <input type="hidden" name="sut" value="JJ" /> </form>

    • ベストアンサー
    • CGI
  • (jQuery)ラジオボタン選択値を配列で送信

    ちょっと前に別の方の同名の質問があり、正しい回答が出る前に、例によって不適切な回答で閉め切られてしまったため、失礼とは存じますが改めて質問させていただきます。 <form id="enqe" action="/hoge/enqe" method="post"> <label for="group_a">好きなフレームワーク</label> <input type="radio" name="group_a" value="a1">cake php</input> <input type="radio" name="group_a" value="a2">fuel php</input> <input type="radio" name="group_a" value="a3">symphony</input> <label for="group_b">使っているOS</label> <input type="radio" name="group_b" value="b1">windows</input> <input type="radio" name="group_b" value="b2">macintosh</input> <input type="radio" name="group_b" value="b3">linux</input> <label for="group_c">使っているCPU</label> <input type="radio" name="group_c" value="c1">ivy bridge</input> <input type="radio" name="group_c" value="c2">sandy bridge</input> </form> のような選択肢があって、選択値を配列で送信したいです。 配列で受けたい理由は、送信側のフォーム(項目、グループ分け)が逐次追加変更される予定で、それに合わせてDBだけを変更して対応したいからです。 したがって、「毎度サーバサイドで対応しろ」という回答は困ります。 <input type="hidden" name="gval[]" value="a1" /> <input type="hidden" name="gval[]" value="b2" /> <input type="hidden" name="gval[]" value="c3" /> という内容を生成して送信すればいいのはわかりますが、どう記述したらいいかがわかりません。 いちおうjQueryで、 $('form#enqe').submit(function(){ // $(this).find("input[type='radio']"); で、<input type="radio">を取得 }); まではわかりましたが、jQueryに疎く、その先がわかりません。 識者の方々のお力をお借りできれば幸いです。

  • 複数のラジオボタン選択肢によりsubmitを押せなくする

    初めて質問させていただきます。 ラジオボタンが下記の選択状態の時だけ「送信(submit)」ボタンを enable で表示させたいです。 1:● 2:○ 1:● 2:○ それ以外の選択肢では「送信(submit)」ボタンを disabl で押せないようにしたいです。 調べて、近い動作にはなりましたが、javascriptに関して 殆ど知識がないため、これから先がさっぱりわかりません。 ぜひ教えを乞いたく参りました。お知恵をお貸しください<(__)> どうぞ宜しくお願い致します。 <HTML> <HEAD> <script type="text/javascript"><!-- function unlock1(el){el.form.send.disabled=false;} function unlock2(el){el.form.send.disabled=true;} //--> </script> <form> 1:<input type="radio" name="radio1" value="1" onClick="unlock1(this)"> 2:<input type="radio" name="radio1" value="2" onClick="unlock2(this)"><br> 1:<input type="radio" name="radio2" value="1" onClick="unlock1(this)"><br> 2:<input type="radio" name="radio2" value="2" onClick="unlock2(this)"><br> <input name="send" type="submit" value="送信" disabled > </form> </BODY> </HTML>

  • 特定のラジオボタンが選択されたらテキストフィールドを入力可

    下のような6つのラジオボタンと1つのテキストフィールドのあるフォームがあります。 「あ・い・う・え・お」のラジオボタンが選択されたらテキストフィールドをdisabledに、「か」なら入力可能にしたくて、JavaScriptで次のように記述しました。 一応動作しているように見えるのですが、見よう見まねで書いた初めてJavaScriptなので大丈夫なのか不安です。これで良いのでしょうか。 function txtClose () { if (document.f_frm.motive[5].checked) { document.f_frm.motive_add.disabled = false; } else { document.f_frm.motive_add.disabled = true; } } <form name="f_frm"> <input type="radio" name="motive" value="あ" onclick="txtClose();" />あ<br /> <input type="radio" name="motive" value="い" onclick="txtClose();" />い<br /> <input type="radio" name="motive" value="う" onclick="txtClose();" />う<br /> <input type="radio" name="motive" value="え" onclick="txtClose();" />え<br /> <input type="radio" name="motive" value="お" onclick="txtClose();" />お<br /> <input type="radio" name="motive" value="か" onclick="txtClose();" />か<br /> <input type="text" name="motive_add" size="20" maxlength="40" onclick="txtClose();" /> </form>

  • チェックボックス とラジオボタンの値取得について

    チェックボックス とラジオボタンの値取得について こんにちは チェックボックスの中にラジオボタンがある場合に チェックボックスの値に続けてラジオボタンの値を表示したいのですが、 うまくいかず悩んでいます。 【やりたいこと】 □そのた2をチェクして男性を選択した場合 「そのた2 男性」と表示したい。 例 そのた1 そのた2 男性 そのた4 そのた5 女性 サンプルのチェックボックスのlabelタグをはずすと $(vals[i]).next($("input[name='radio']:checked").val()); で値を取得できたのですが、 labelタグを付けたまま値を取得することは可能でしょうか? labelタグをつけたまま、 $(vals[i]).find($("input[name='radio']:checked").val()); でやってみたのですが、undefindがでてしまいました。 サンプルではチェックボックスの数は1個ですが、 □が30個以上 のチェックボックスが50個くらいあるので、 1回の記述で済ませたいのですが、 ラジオボタンが隣にあったら値を取得する のようにできるのでしょうか? 何かよい方法があれば教えて頂けないでしょうか。 よろしくお願い致します。 ■サンプルソース <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script type="text/javascript" language="JavaScript"></script> <script language="javascript"> <!-- function textb(){ var str=""; var vals = document.forms['f'].elements['q1']; for(i=0; i<vals.length; i++){ if(vals[i].checked){ str=str + vals[i].value + '\n'; } } document.f.log.value=str; } --> </script> <title></title> </head> <body> <form name="f"> <div>アンケート<br> <label for="1"><input type="checkbox" name="q1" class="chex" id="1" value="その1"> その1</label><br> <label for="2"><input type="checkbox" name="q1" class="chex" id="2" value="その2"> その2</label> <input type="radio" name="radio1" value="可">男性 <input type="radio" name="radio1" value="否">女性 <br> <label for="3"><input type="checkbox" name="q1" class="chex" id="3" value="その3"> その3</label><br> <label for="4"><input type="checkbox" name="q1" class="chex" id="4" value="その4"> その4</label><br> <label for="5"><input type="checkbox" name="q1" class="chex" id="5" value="その5"> その5</label> <input type="radio" name="radio2" value="可">男性 <input type="radio" name="radio2" value="否">女性 <br> </div> <input type="button" value="確認" onclick="textb()"> <input type="reset" value="クリア"> <br> <textarea name="log" rows="4" cols="50"></textarea></form> </body> </html>

  • JavaScript フォームでのラジオボタン制御

    JavaScript初心者です。 <input name="sample1" value="左ラジオボタン" checked="checked" type="radio"> 左ラジオボタン <input name="sample1" value="右ラジオボタン" type="radio">右ラジオボタン 右ラジオボタンをクリックした場合に下記のラジオボタンをクリックできる <input name="sample2" value="1" type="radio">1 <input name="sample2" value="2" type="radio">2 <input name="sample2" value="3" type="radio">3 <input name="sample2" value="4" type="radio">4 上記のように右ラジオボタンにチェックした時だけ1~4のラジオボタンをクリックできるように制御 したいのですがどのように書いて言ったらいいのか困っています。 $(function() { $("[name='sample1']").click(function(){ var num = $("[name='sample1']").index(this); if(num == 1){ $("[name='sample1']").attr("disabled", false); } else { $("[name='sample1']").attr("disabled", true); } }); }); 上記のようにしてみたのですがここからどう下のラジオボタンを操作させるようにしていったらいいのかわかりません。 詳しい方どなたかご教示頂けないでしょうか? 宜しくお願い致します。

  • ラジオボタンを一括で操作する方法を教えてください。javascript

    下記のようにフォームがあります。 チェックボックスをクリックして始めて、 同列のラジオボタンが選択できるようにしたいと考えております。 現在は、質問1のみですが質問の数がその下に増えていくと考えた場合、(例えば質問10まであると仮定して考えてください。)どのようにスクリプトを書いていけば、スマートになるかお知恵を貸していただけませんでしょうか? よろしくお願いいたします。 <form name="form1"> <table><tr> <th><input type="checkbox" name="q1_1" value="" onClick="quetion()">質問1</th> <td><input type="radio" name="q1_1a" value="a" disabled ></td> <td><input type="radio" name="q1_1a" value="b" disabled ></td> <td><input type="radio" name="q1_1a" value="c" disabled ></td> </table></form>

  • javascriptからラジオボタンへのアクセス

    cakephpで以下のソースを書き、ラジオボタンタグを出力しました。 $form->create('name' => 'form') $form->radio('TestModel.field',array('指定なし', '無', '有'), 'value' => 0)); $form->end(); ----出力されたHTML(formタグなどは省略しています)------ <input type="radio" name="data[TestModel][field]" id="TestModelField0" value="0" checked="checked" > <label for="TestModelField0">指定なし</label> <input type="radio" name="data[TestModel][field]" id="TestModelField1" value="1" > <label for="TestModelField1">無</label> <input type="radio" name="data[TestModel][field]" id="TestModelField2" value="2" > <label for="TestModelField2">有</label> -------------------------------- [リセット]ボタンのようなのを押した時に、'指定なし'の初期値を選択するようにしたいので、 javascriptでしようとしているのですが、 name属性が"data[TestModel][field]"のためか、 document.form.data[ModelTest][field].value = 0とするとエラーになってしまいます。 (TestModelは宣言されていません。というエラー) ラジオボタンのグループは複数あります。 ラジオボタンにアクセスするにはどうしたらよいでしょうか。

  • ラジオボタン

    htmlで質問です。 input typeのラジオボタンを横並びにしたいのですがどうすればできますか? <div class="form-item"> <label for="sex"></label> <input type="radio" name="sex" value="男"><i class="fas fa-mars man"></i></input> <input type="radio" name="sex" value="女"><i class="fas fa-venus woman"></i></input> </div>

    • ベストアンサー
    • HTML