チェックボックスとラジオボタンの連動について

このQ&Aのポイント
  • Javascriptを使用して、親のチェックボックスが選択された場合、子のラジオボタンが選択可能になる方法について詳しく説明します。
  • チェックボックスとラジオボタンの連動について、親のチェックボックスが選択された際に子のラジオボタンが選択可能になるようにする方法について解説します。
  • Javascriptを使用して、親のチェックボックスの選択状態を監視し、選択された場合に子のラジオボタンを有効化する方法を紹介します。
回答を見る
  • ベストアンサー

チェックボックスとラジオボタンの連動について

□親メニュー1 □親メニュー2 ◎子メニュー1 ◎子メニュー2 ◎子メニュー3 上記のように、親のチェックボックスが2つあり、 どちらか一方をチェック、または両方チェックを入れると、 子のラジオボタンが選択可能になるようにしたいのですが Javascriptの書き方が分かりません。 <input type="checkbox" name="親メニュー" id="id01" value="親メニュー1"> 親メニュー1 <input type="checkbox" name="親メニュー" id="id02" value="親メニュー2"> 親メニュー2 <input type="radio" name="子メニュー" id="id03" value="子メニュー1"> 子メニュー1 <input type="radio" name="子メニュー" id="id04" value="子メニュー2"> 子メニュー2 <input type="radio" name="子メニュー" id="id05" value="子メニュー3"> 子メニュー3 また条件が一つあり 上記のようにname属性に日本語が含まれて、nemeが同じなので チェック有無がID属性か、別の要素で確認が出来るようにしたいのですが どのようにすれば出来るのかお教え頂けないでしょうか。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>name属性に日本語が含まれて この運用は高い確率で破綻します、なるべく避けた方がいいでしょう。 >チェック有無がID属性か、別の要素で確認が出来るよう こんな感じでどうでしょう? <script> window.onload=function(){ set_radio(); } try{ document.addEventListener ('click',function(e){clickfunc(e)},true); //基本 }catch(e){ document.attachEvent('onclick',function(e){clickfunc(e)}); //IE } function clickfunc(e){ var t = (e.srcElement || e.target); if(t.id=="id01" || t.id=="id02"){ set_radio(); } } function set_radio(){ var flg=!(document.getElementById('id01').checked || document.getElementById('id02').checked ); document.getElementById('id03').disabled=flg; document.getElementById('id04').disabled=flg; document.getElementById('id05').disabled=flg; } </script> <form> <div> <input type="checkbox" name="親メニュー" id="id01" value="親メニュー1"> 親メニュー1 <input type="checkbox" name="親メニュー" id="id02" value="親メニュー2"> 親メニュー2 </div> <div> <input type="radio" name="子メニュー" id="id03" value="子メニュー1"> 子メニュー1 <input type="radio" name="子メニュー" id="id04" value="子メニュー2"> 子メニュー2 <input type="radio" name="子メニュー" id="id05" value="子メニュー3"> 子メニュー3 </div> <form>

rasingi
質問者

お礼

早速のご回答くださり、ありがとうございます。 うまくこの通りに機能することができました。 name属性で日本語は避けるべきなのですね。 利用しているメールフォームのCGIがあって それには仕様でname属性が日本語でしたので この条件でやるしかないと思ってました。 これで助かりました。大変感謝致します。

その他の回答 (1)

noname#158634
noname#158634
回答No.1

自分ではどこまでできたのか、きちんと書きましょうね。 checkedプロパティというのがあります。 http://javascriptist.net/ref/element.checked.html あとはifとorだけなのですぐに理解できるでしょう。

rasingi
質問者

お礼

早速のご回答くださり、ありがとうございます。 確かに説明不足でした。すみません。 参考にさせて頂きます。

関連するQ&A

  • チェックボックス/ラジオボタン

    CGIを勉強中です。 まだ無料で配布されているCGIをカスタムするくらいしかできないレベルです。 今度やりたいのが、チェックボックス/ラジオボタンどじらでもいいのですが、 こちらに送られてくるメールフォームで選択されているものは仮に「Y」 選択されていないものは「N」という形で受け取りたい場合はどのように したらできるのでしょうか? よろしくお願いします。 <input type="checkbox" name="みかん" value="みかん" />みかん <input type="checkbox" name="りんご" value="りんご" />りんご <input type="checkbox" name="メロン" value="メロン" />メロン <input type="radio" name="みかん" value="みかん">みかん  <input type="radio" name="りんご" value="りんご">りんご

    • ベストアンサー
    • CGI
  • ラジオボタンとチェックボックスの計算について

    ラジオボタンとチェックボックスで選択して、その合計を表示させたいのですが、合計の最高は50になる用に作ったのですが、9点にしかなりません。 私が考えるに、<script language="JavaScript">~</script>の間が間違っていると思うのですがどうでしょうか? 皆様ご教授の程お願いします。 <script language="JavaScript"> <!-- // 項目の合計を計算 function ttlValue() { chn = 10; // ラジオボタンとチェックボックスの総数 ttl = 0; for(i=0; i<chn; i++) { if(document.nForm.elements[i].checked) { ttl += eval(document.nForm.elements[i].value); } } document.nForm.result.value = ttl; } //--> </script> </head> <body alink="#000000" bgcolor="#f0f8ff" link="#00ffff" text="#000000" vlink="#ff0000"> <br> それぞれの項目で該当する回答を1つずつ選択して下さい。 <form name="nForm">項目1<br> <input name="ch1" value="3" checked="checked" type="radio">a<br> <input name="ch1" value="2" type="radio">b<br> <input name="ch1" value="1" type="radio">c<br> <input name="ch1" value="0" type="radio">d<br> <br> 項目2<br> <input name="ch2" value="3" checked="checked" type="radio">a<br> <input name="ch2" value="2" type="radio">b<br> <input name="ch2" value="1" type="radio">c<br> <input name="ch2" value="0" type="radio">d<br> <br> 項目3<br> <input name="ch3" value="3" checked="checked" type="radio">a<br> <input name="ch3" value="2" type="radio">b<br> <input name="ch3" value="1" type="radio">c<br> <input name="ch3" value="0" type="radio">d<br> <br> 項目4<br> <input name="ch4" value="1" checked="checked" type="radio">a<br> <input name="ch4" value="0" type="radio">b<br> <br> 項目5<br> <input name="ch5" value="1" checked="checked" type="radio">a<br> <input name="ch5" value="0" type="radio">b<br> <br> オプションがあれば選択して下さい。(複数選択可)<br> <input name="bx1" value="1" type="checkbox">1<br> <input name="bx1" value="1" type="checkbox">2<br> <input name="bx1" value="1" type="checkbox">3<br> <input name="bx1" value="1" type="checkbox">4<br> <input name="bx1" value="1" type="checkbox">5<br> <input name="bx1" value="1" type="checkbox">6<br> <input name="bx1" value="1" type="checkbox">7<br> <input name="bx1" value="1" type="checkbox">8<br> <input name="bx1" value="1" type="checkbox">9<br> <input name="bx1" value="1" type="checkbox">10<br> <input name="bx1" value="1" type="checkbox">11<br> <input name="bx1" value="1" type="checkbox">12<br> <input name="bx1" value="1" type="checkbox">13<br> <input name="bx1" value="1" type="checkbox">14<br> <input name="bx1" value="1" type="checkbox">15<br> <input name="bx1" value="1" type="checkbox">16<br> <input name="bx1" value="1" type="checkbox">17<br> <input name="bx1" value="1" type="checkbox">18<br> <input name="bx1" value="1" type="checkbox">19<br> <input name="bx1" value="1" type="checkbox">20<br> <input name="bx1" value="1" type="checkbox">21<br> <input name="bx1" value="1" type="checkbox">22<br> <input name="bx1" value="1" type="checkbox">23<br> <input name="bx1" value="1" type="checkbox">24<br> あなたの獲得したメダルは何色?<br> <select name="ch2"> <option value="0" selected="selected">なし</option> <option value="5">金メダル</option> <option value="3">銀メダル</option> <option value="1">銅メダル</option> </select> <br> <br> メダル獲得まで何年かかりましたか?<br> 項目6<br> <input name="ch6" value="10" checked="checked" type="radio">20年以上<br> <input name="ch6" value="5" type="radio">19年~10年<br> <input name="ch6" value="3" type="radio">9年~5年<br> <input name="ch6" value="1" type="radio">4年~3年<br> <input name="ch6" value="0" type="radio">2年未満<br> <br> <input value="合計金額を計算" onclick="ttlValue()" type="button"><br> <br> 合計<input name="result" size="10" type="text"> </form> <br>

  • ラジオボタンの選択でチェックボックスのON/OFFを連動

    ラジオボタンを選択すると、連動してチェックボックスにチェックが入れられる仕組みを作りたいのですが。 本番環境ではこの仕組みを3つほど使用したいです。 現在ここまでは出来ていますが、2つ・3つとこの仕組みを増やすと、動作が出来なくなってしまいます。 さらに、ラジオボタンを選択するたびにチェックボックスのチェックが初期化される仕組みにしたいのですが・・・>< どなたか教えて頂けないでしょうか? <html> <head> <script> window.onload=function(){ document.getElementById("deta1").onclick=function(){ detagroupDisabled(this.form,true); } document.getElementById("deta2").onclick=function(){ detagroupDisabled(this.form,true); } document.getElementById("deta3").onclick=function(){ detagroupDisabled(this.form,false); } } function detagroupDisabled(f,flg){ var objs=f.getElementsByTagName("input"); for(var i=0;i<objs.length;i++){ if(objs[i].className=="detagroup") objs[i].disabled=flg; } } </script> </head> <body> <form action="./postmail.cgi" method="post"> <input type="radio" name="FPCデータ" id="deta3" value="アリ"><label for="deta3">アリ</label> <input type="checkbox" name="FPCデータ アリ" id="DXF" class="detagroup" value="DXF" disabled><label for="DXF">DXF</label> <input type="checkbox" name="FPCデータ アリ" id="ガーバ" class="detagroup" value="ガーバ" disabled><label for="ガーバ">ガーバ</label> <input type="checkbox" name="FPCデータ アリ" id="PDF" class="detagroup" value="PDF" disabled><label for="PDF">PDF</label> <input type="radio" name="FPCデータ" id="deta1" value="ナシ" checked><label for="deta1">ナシ</label> <input type="radio" name="FPCデータ" id="deta2" value="アリ"><label for="deta2">相談</label><br><br> <input type="radio" name="補強板" value="ナシ" checked="checked">ナシ <input type="radio" name="補強板" value="アリ">アリ <input type="checkbox" name="補強板" value="ポリイミド">ポリイミド <input type="checkbox" name="補強板" value="ポリエステル">ポリエステル <input type="checkbox" name="補強板" value="ガラエポ">ガラエポ <input type="checkbox" name="補強板" value="相談">相談<br><br> <input type="radio" name="印刷" value="ナシ" checked="checked">ナシ <input type="radio" name="印刷" value="アリ">アリ <input type="checkbox" name="印刷" value="銀シールド">銀シールド <input type="checkbox" name="印刷" value="銀ペースト">銀ペースト <input type="checkbox" name="印刷" value="銅ペースト"> 銅ペースト <input type="checkbox" name="印刷" value="シルク">シルク 色 <SELECT NAME="印刷"> <OPTION SELECTED VALUE="---">--- <OPTION VALUE="白">白 <OPTION VALUE="黒">黒 <OPTION VALUE="他">他 </SELECT>   </form> </body> </html>

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

    チェックボックス とラジオボタンの値取得について こんにちは チェックボックスの中にラジオボタンがある場合に チェックボックスの値に続けてラジオボタンの値を表示したいのですが、 うまくいかず悩んでいます。 【やりたいこと】 □そのた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>

  • チェックボックスのON/OFFに連動してラジオボタンのdisabledを解除

    下記の動作をする checkfunc(); の書き方をご教示ください. <html> <head> <script type="text/javascript"> checkfunc() </script> </head> <body> <form name="myform"> <input type="checkbox" name="yesno" value="1">チェックボックス <input type="radio" name="rdo1" value="0">ラジオボタン0 <input type="radio" name="rdo1" value="1">ラジオボタン1 <input type="radio" name="rdo1" value="2">ラジオボタン2 <input type="radio" name="rdo1" value="3">ラジオボタン3 <input type="radio" name="rdo1" value="4">ラジオボタン4 </form> </body> </html> (1) このHTMLのラジオボタン5つは,最初は全てdisabledです. (2) チェックボックスがされたらラジオボタングループが有効になるようにしたいです. (3) 逆に,チェックが外れたらラジオボタンはdisabledに戻ります. (4) このjavascriptは,PHPファイルに組み込みますが.表示時にDBを読み込んでどれに  チェック/選択されていたかによって,checkboxやradioに「checked」を追記します.  その場合,enabled/disablesの関係に矛盾がないようにもしたいですが,  <body>に onload="checkfunc();" と入れればいいでしょうか? なお,IE以外のブラウザでも動作できると大変助かります.よろしくお願い致します.

  • チェックボックスやラジオボタンでの計算

    チェックボックスや、ラジオボタンで、選択した項目の金額を、最後にテキストフォームに表示させる…というやり方を探しております ソース途中からですが…↓ <tr> <Td Valign="middle" Width="80">部数選択</td> <Td Align="center" Valign="middle"><必須></td> <Td> <Input Type="radio" Name="pay" Value="100部 10000円">100部 ¥10,000円<Br> <Input Type="radio" Name="pay" Value="150部 20000円">150部 ¥20,000円<Br> <Input Type="radio" Name="pay" Value="200部 30000円">200部 ¥30,000円<Br> <Input Type="radio" Name="pay" Value="300部 40000円">300部 ¥40,000円<Br> <Input Type="radio" Name="pay" Value="300部以上 ※お見積もりいたします">300部以上 ※お見積もりいたします<Br> </td> </tr> <tr> <Td Valign="middle" Width="80">オプション選択<Br>(複数選択可)</td> <Td Align="center" Valign="middle"><必須></td> <Td> <Input Type="checkbox" Name="op[]" value="地図を入れる">地図を入れる<Br> <Input Type="checkbox" Name="op[]" value="先生のプロフィールを入れ">先生のプロフィールを入れる<Br> <Input Type="checkbox" Name="op[]" value="ごあいさつを入れる">ごあいさつを入れる<Br> <Input Type="checkbox" Name="op[]" value="生徒募集中を入れ">生徒募集中を入れる<Br> <Input Type="checkbox" Name="op[]" value="写真を入れる">写真を入れる<Br> <Input Type="checkbox" Name="op[]" value="ゲスト紹介">ゲスト紹介<Br> <Input Type="checkbox" Name="op[]" value="QRコード">QRコード<Br> </td> </tr> といった感じです。 value はすでに、他のところで使用しています 単純に計算だけを目的とさせているんですが、どうしたら良いでしょうか?

  • 検索にチェックボックス・ラジオボタンを追加する

    こちらでページの分割について質問させていただいたものです。 http://okwave.jp/qa/q6585344.html ベストアンサーに選ばせていただいたコードを元に、 チェックボックス検索・ラジオボタン検索を追加するにはどのようにすればよいのでしょうか。 【htmlのフォーム部分】 <form method="post" action="sample.php"> <input type="text" name="keyword" value="<?php echo $keyword ?>"/> <input type="hidden" name="s" value="0" /> <input type="checkbox" name="search1[]" value="AA">AA<br> <input type="checkbox" name="search1[]" value="BB">BB<br> <input type="checkbox" name="search1[]" value="CC">CC<br> <input type="checkbox" name="search1[]" value="DD">DD<br> <input type="radio" name="search2" value=" ORDER BY id DESC" checked>登録順 <input type="radio" name="search2" value=" ORDER BY age DESC">年齢順 <input type="submit" /> 誠に勝手ながら、急ぎ必要となった知識で、初心者の為丸投げのような質問になり、申し訳ございません。 また、本は片手にあるのですが、用語の理解が不十分なためコード付きにてご回答いただけると嬉しいです。 また、

    • ベストアンサー
    • PHP
  • 一つのチェックボックスのON/OFFに応じて他の複数をON/OFFに

    昨日の質問した下記の関連で再質問です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1765687 親1に対し、子1~4と、合計5つのチェックボックスがあり、 親のチェックOFF ⇒ 子1~4をdisableに、 子のチェックON ⇒ 子1~4をactive としたいのですが、 #4さんのご回答を適用すると、上記5つのチェックボックス以外も 全てdisableの対象になってしまいます。 他方、自分の元質問のソースを改造しようとも思いましたが、 子1~4のname属性が全て違う名前のため、そのままでは使えません。 ついでに(些細なことですが) 子1~4の全てがONにされた時に、親がOFFなら自動でONにしたいです。 テンプレートは下記ですが、よろしくお願い致します。 <html> <head> <script language="javascript" type="text/javascript"> // ■■■■ </script> </head> <body> <form id="query" name="query"> <input type="checkbox" name="oya" value="1" checked>親 <input type="checkbox" name="ko1" id="ko1" value="1" checked>子1 <input type="checkbox" name="ko2" id="ko2" value="1" checked>子2 <input type="checkbox" name="ko3" id="ko3" value="1" checked>子3 <input type="checkbox" name="ko4" id="ko4" value="1" checked>子4 </form> </body> </html>

  • チェックボックスとテキストボックスを連動させたい

    JavaScriptでチェックボックスにチェックが入るとテキストボックス自動で数字の1が入る仕組みを作っています。 以下のソースまではかけたのですが 列はそれほどないのですがと行数が多数存在します。 ファンクションが一つで済む方法はありませんでしょうか。 またデータを配列で送信したいのですが配列ですと動きません。 是非教えて頂けると幸いです。 <SCRIPT LANGUAGE="JavaScript"> function check1(radio) { //チェックボックスにチェックが入った場合 if(radio.checked) { form = radio.form; form.data1[1].value = radio.value; form.data1[2].value = radio.value; form.data1[3].value = radio.value; form.data1[4].value = radio.value; }else{ //チェックが外された場合 form = radio.form; form.data1[1].value = ""; form.data1[2].value = ""; form.data1[3].value = ""; form.data1[4].value = ""; } } function check2(radio) { //チェックボックスにチェックが入った場合 if(radio.checked) { form = radio.form; form.val5.value = radio.value; form.val6.value = radio.value; form.val7.value = radio.value; form.val8.value = radio.value; }else{ //チェックが外された場合 form = radio.form; form.val5.value = ""; form.val6.value = ""; form.val7.value = ""; form.val8.value = ""; } } </SCRIPT> <FORM METHOD="POST"> <INPUT TYPE="checkbox" NAME="r" VALUE="1" onclick="check1(this)">チェック1<BR> <INPUT NAME="data1[1]" SIZE="1"> <INPUT NAME="data1[2]" SIZE="1"> <INPUT NAME="data1[3]" SIZE="1"> <INPUT NAME="data1[4]" SIZE="1"><br> <INPUT TYPE="checkbox" NAME="r" VALUE="1" onclick="check2(this)">チェック2<BR> <INPUT NAME="val5" SIZE="1"> <INPUT NAME="val6" SIZE="1"> <INPUT NAME="val7" SIZE="1"> <INPUT NAME="val8" SIZE="1"> </FORM>

  • チェックに応じて違うチェックボックスをアクティブにしたい

    次のHTMLのように、大分類、小分類のような構成のチェックボックス グループがあります(初期設定は全部チェック無しです) 普段は[a][b][c][d]をdisableとしておき、(1) にチェックが入った 場合に[d]以外([a][b][c])アクティブ(?とにかくチェックを入れる ことができる)ようにするにはどうしたらいいでしょうか。 よろしくお願い致します。 <form id="Form1"> : <INPUT TYPE="CHECKBOX" NAME="food" value="果物">(1) 果物 <INPUT TYPE="CHECKBOX" NAME="food" value="野菜">(2) 野菜 <INPUT TYPE="CHECKBOX" NAME="food" value="肉魚">(3) 肉魚 <br> <INPUT TYPE="CHECKBOX" NAME="fruit" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit" value="バナナ">[d] バナナ : </form>

専門家に質問してみよう