(jQuery)ラジオボタン選択値を配列で送信

このQ&Aのポイント
  • jQueryを使用して、ラジオボタンの選択値を配列で送信する方法を教えてください。
  • 選択肢があるフォームにおいて、選択された値を配列として受け取る方法を教えてください。
  • jQueryでラジオボタンの選択値を配列で送信する方法について教えてください。
回答を見る
  • ベストアンサー

(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に疎く、その先がわかりません。 識者の方々のお力をお借りできれば幸いです。

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

  • ベストアンサー
回答No.2

通常版で書き換えてみました。 jQuery('#enqe').submit(function(){ var that = this; jQuery('input[type="radio"]:checked','#enqe').each(function(i){ $("<input>").attr({ 'type':'hidden', 'name':'hoge['+i+']' }).val(jQuery(this).val()).appendTo(that); }); return true; });

nayutax1010
質問者

お礼

これです、これです! 丁寧にも、 <input type="hidden" name="hoge[0]" value="a1"/> <input type="hidden" name="hoge[1]" value="b1"/> <input type="hidden" name="hoge[2]" value="c1"/> とかになってます。サーバによっては、こうじゃないとうまく転送値を配列として判定できないものもあるようで。 本当に有難うございます(別件のご回答も含めて)厚く御礼申し上げます。

その他の回答 (1)

回答No.1

sendデータを作ってあげこんな感じですかね? 'hoge[]'が配列していです。 jQuery('#enqe').submit(function(){ var sendData = []; jQuery('input[type="radio"]:checked','#enqe').each(function(){ sendData[sendData.length] = jQuery(this).val(); }); jQuery.post(jQuery('#enqe').attr('action'), { 'hoge[]': sendData }); return false; });

nayutax1010
質問者

補足

回答いただきありがとうございます。 なるほど。。Ajaxではそんな風に遷移するのですね。。 全く申し訳ないのですが、今回、サーバサイドの事情で、Ajaxを使った更新ではなく、通常のsubmitで遷移したいのです。 説明が悪くて申し訳ありません。 ひきつづき、アドバイスなどありましたらよろしくお願いします。

関連するQ&A

  • ラジオボタンについて

    ラジオボタンのnameにそれぞれ違う名前をつけても 選択の制限を1つだけにできるやり方はありませんか? 例 <input type="hidden" name="a1" value="0151" /> <input name="a" type="radio" value="1" /> <input type="hidden" name="b1" value="0152" /> <input name="b" type="radio" value="1" /> <input type="hidden" name="c1" value="0153" /> <input name="c" type="radio" value="1" /> 私がやりたいことはあるプログラムシステムで使用するため ラジオボタンの上にhiddenでそれぞれ指定してるため このような形で表示できないかと、おもっています。

    • ベストアンサー
    • HTML
  • 選択した内容をメールの件名に

    cgiを利用してメール送信フォームを作成しました。 「場所」はA,B,Cをラジオボタンで選択できるようにしました。 選択された「場所」を送信されたメールのタイトルにもってくるには どうしたらいいのでしょうか? ◎A ○B ○C 上記のように「A」を選択した場合、 メールタイトル:A としたい。 <td class="checkboxRequired"> <input type="radio" value="A" name="場所" class="validate required" /> <label for="場所">A</label>  <input type="radio" value="B" name="場所" /> <label for="場所">B</label> <input type="radio" value="C" name="場所" /> <label for="場所">C</label>  </td> <input type="hidden" name="subject" value="" />

    • ベストアンサー
    • CGI
  • ラジオボタンでうまくするには・・・・

    初めまして。 現在下記のプルダウン形式で、一つの価格が同じなので問題なく動くのですが <FORM action="cart/sys/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> <SELECT name=sur> <OPTION value="" selected>購入数量</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> <OPTION value=5>5</SELECT> <INPUT type=submit value=カートに入れる> </FORM><BR> <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> </FORM> 同じ商品で1・2・3・4・5のそれぞれに単価が変わる設定をしたいのですが、うまくいく方法が見つからないです。 ラジオボタン形式で作ってみたものの・・・・ <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=submit value=カートに入れる> </FORM> <FORM> <INPUT type="radio" name="name1" value="2000">1袋<BR> <INPUT type="radio" name="name1" value="3900">2袋<BR> <INPUT type="radio" name="name1" value="5800">3袋<BR> <INPUT type="radio" name="name1" value="7500">4袋<BR> <INPUT type="radio" name="name1" value="8500">5袋</FORM> としてみましたがうまくいきません。 なにか方法ございましたら、ご教授いただければと思います。

    • ベストアンサー
    • HTML
  • Formのラジオボタンリセット方法

    下記のradioボタンのグループr1、r2、r3、r4のうちグループr1とr2だけを同時にリセットする方法はありますか? グループ1つリセットする方法はわかりますが、2つリセットになると方法が分かりません。 良い方法はありませんか?よろしくお願いします。 <form> <p> <input type="radio" name="r1" value="1" checked>1<br> <input type="radio" name="r1" value="2">2<br> <input type="radio" name="r1" value="3">3 </p> <p> <input type="radio" name="r2" value="a" checked>a<br> <input type="radio" name="r2" value="b">b<br> <input type="radio" name="r2" value="c">c </p> <p> <input type="radio" name="r3" value="a" checked>a<br> <input type="radio" name="r3" value="b">b<br> <input type="radio" name="r3" value="c">c </p> <p> <input type="radio" name="r4" value="a" checked>a<br> <input type="radio" name="r4" value="b">b<br> <input type="radio" name="r4" value="c">c </p> </form>

  • ラジオボタンの未選択チェックについて

    ラジオボタンの未選択チェックに困っています! フォームにInputして、CGIで送信するように設定しています。 但し、送信内容を管理者がメール受信するため、ラジオボタンの「name」は漢字にしています。   <name> <value> Webの見やすさ = 見やすい  と表示されるようにです。 <INPUT type="radio" name="Webの見やすさ" value="見やすい" id="Q11"><label for="Q11"> 見やすい</label> <INPUT type="radio" name="Webの見やすさ" value="特に問題ない" id="Q12"><label for="Q12"> 特に問題ない</label> <INPUT type="radio" name="Webの見やすさ" value="ふつう" id="Q13"><label for="Q13"> ふつう</label>   <INPUT type="radio" name="Webの見やすさ" value="やや見にくい" id="Q14"><label for="Q14"> やや見にくい</label>   <INPUT type="radio" name="Webの見やすさ" value="見にくい" id="Q15"><label for="Q15"> 見にくい</label></TD> この場合、ラジオボタンの未選択チェックは、どのようにしたら いいのでしょうか? 今までは、「name」を英数にしていたので、下記のようにしていました。 <script language="JavaScript"> <!-- function chk(oj) { if ((oj.Q1[0].checked == false) && (oj.Q1[1].checked == false) && (oj.Q1[2].checked == false) && (oj.Q1[3].checked == false) && (oj.Q1[4].checked == false)) { alert("Q1のボタンが未選択です"); return false ; } else { return true ; } }//--> </script> 初心者のため、何を変えたらいいのか・・・ホームページを調べたのですが分かりませんでした。 「name」が漢字の場合、どのように指示したらいいのか、ぜひぜひご教授願います。 どうぞよろしくお願いいたします。

  • ラジオボタンが未選択時の制御方法について

    たびたびお世話になっております。 Webフォームを思考策後しながら作成しています。 下記のラジオボタン1 とラジオボタン3 は選択して、 ラジオボタン2 は選択せずに出力する下記のように、 ハヌけした書式で出力されます。 ハヌけしないように出力させる方法はありますでしょうか? ご教授をお願いいたします。 出力結果: ------------------------------------------------------------------------------- 【ラジオボタン1】:回答1 【ラジオボタン3】:回答1 ソース: ------------------------------------------------------------------------------- <head> <title>アンケートフォーム</title> <script type="text/javascript">  <!-- 値の加工用// --> function textoutput() {        <!-- フォームを変数に// --> var formObj = document.form01;        <!-- radioを取得// --> var radio01 = formObj.A01;        <!-- radioを取得// --> var radio02 = formObj.A02;        <!-- radioを取得// --> var radio03 = formObj.A03;        <!-- textを結合用の変数として準備// -->        <!-- A01の中から選択されているものを取得// --> var text = '下記リカバリシートを案内' + '\n';        <!-- A02の中から選択されているものを取得// --> for ( var i = 0; i < radio01.length; i ++ ) { if ( radio01[i].checked === true ) { text += '【ラジオボタン1】:' + '\n' + radio01[i].value;}} text += '\n';        <!-- A02の中から選択されているものを取得// --> for ( var i = 0; i < radio02.length; i ++ ) { if ( radio02[i].checked === true ) { text += '【ラジオボタン2】:' + '\n' + radio02[i].value;}} text += '\n';        <!-- A02の中から選択されているものを取得// --> for ( var i = 0; i < radio03.length; i ++ ) { if ( radio03[i].checked === true ) { text += '【ラジオボタン3】:' + '\n' + radio03[i].value;}} text += '\n'; <!-- output.valueにtextを反映(最後に改行コード)// --> formObj.output.value = text + '\n'; } </script> </head> <body> <strong>アンケートフォーム</strong><br /><br /> <form name="form01"> <!--ラジオボタン// --> <strong>・ラジオボタン1</strong><br /> <input type="radio" name="A01" value="回答1" id="radio1-1" " tabindex="3"> <label for="radio1-1">回答1</label> <input type="radio" name="A01" value="回答2" id="radio1-2" " tabindex="4"> <label for="radio1-2">回答2</label> <input type="radio" name="A01" value="回答3" id="radio1-3" " tabindex="5"> <label for="radio1-3">回答3</label> <br /> <!--ラジオボタン// --> <strong>・ラジオボタン2</strong><br /> <input type="radio" name="A02" value="回答1" id="radio1-1" > <label for="radio1-1">回答1</label> <input type="radio" name="A02" value="回答2" id="radio1-2"> <label for="radio1-2">回答2</label> <input type="radio" name="A02" value="回答3" id="radio1-3"> <label for="radio1-3">回答3</label> <br /> <!--ラジオボタン// --> <strong>・ラジオボタン3</strong><br /> <input type="radio" name="A03" value="回答1" id="radio1-1" > <label for="radio1-1">回答1</label> <input type="radio" name="A03" value="回答2" id="radio1-2"> <label for="radio1-2">回答2</label> <input type="radio" name="A03" value="回答3" id="radio1-3"> <label for="radio1-3">回答3 </label> <br /> <!--ログ出力// --> ログ出力<br> <input type="button" value="ログ出力" onClick="textoutput();"> <input type="reset" value="リセット"><br> <textarea name="output" cols="60" rows="10"></textarea><br> </form> </body> </html>

  • 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は宣言されていません。というエラー) ラジオボタンのグループは複数あります。 ラジオボタンにアクセスするにはどうしたらよいでしょうか。

  • チェックされたラジオボタンにフォーカスを移動したい

    <LABEL><INPUT type="radio" id="a" value="0" checked>すべて</LABEL><BR> <LABEL><INPUT type="radio" id="a" value="1">一部</LABEL><BR> <LABEL><INPUT type="radio" id="a" value="2">なし</LABEL><BR> <LABEL><INPUT type="radio" id="b" value="0" checked>すべて</LABEL><BR> <LABEL><INPUT type="radio" id="b" value="1">一部</LABEL><BR> <LABEL><INPUT type="radio" id="b" value="2">なし</LABEL><BR> <LABEL><INPUT type="radio" id="c" value="0" checked>すべて</LABEL><BR> <LABEL><INPUT type="radio" id="c" value="1">一部</LABEL><BR> <LABEL><INPUT type="radio" id="c" value="2">なし</LABEL><BR> ・・・ のようにラジオボタンがグループ別に並んでいる場合に Enterキーを押したときにフォーカスが次のラジオボタングループの チェックが入ったラジオボタンにフォーカスを移動したいのですが、 何かいい方法はないでしょうか?

  • jQueryで複数のラジオボタンを処理

    jQueryを最近使い始めました。 以下のようなことをしたいのですが、いいやり方が分かりません。 jQueryを使ってページの読み込み後すぐに、ラジオボタンにチェックを入れたいと思っています。 以下のようにすると実際にチェックが入りました。 HTML <input type="radio" name="a" value="1" /> <input type="radio" name="a" value="2" /> jQuery if(!$("input:radio[name=a]:checked").val()){  $("input:radio[name=a]:first").attr("checked" , "checked"); } ラジオボタンが複数ある場合、上記のjQueryのnameの値を変えたものを増やしていけば対応できたのですが、ラジオボタンがたくさんある場合、同じようなスクリプトが何行も増えてしまいます。 うまく関数にする方法やその他よい対処法はないでしょうか。 <input type="radio" name="a" value="1" /> <input type="radio" name="a" value="2" /> <input type="radio" name="b" value="1" /> <input type="radio" name="b" value="2" /> <input type="radio" name="c" value="1" /> <input type="radio" name="c" value="2" /> … if(!$("input:radio[name=a]:checked").val()){  $("input:radio[name=a]:first").attr("checked" , "checked"); } if(!$("input:radio[name=b]:checked").val()){  $("input:radio[name=b]:first").attr("checked" , "checked"); } if(!$("input:radio[name=c]:checked").val()){  $("input:radio[name=c]:first").attr("checked" , "checked"); } …

  • ラジオボタン

    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

専門家に質問してみよう