- ベストアンサー
ラジオボタンを一括で操作する方法を教えてください。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>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
スマートかどうかは判りませんが (1) quetion('q1_1a') で呼び出して、引数で指定されたname のフォームをdisabled=false にする (2) チェックボックスとラジオボタンの命名規則を X Xa のように決めておき quetion(this) で呼び出す。 function quetion(el){…、で受けたとすると el.name で"q1_1" のような名前が取り出せるので、 "q1_1" + "a" の様に配下となるラジオボタンの名前を作り出して 以下(1) と同じ。 この場合は、form が複数あった場合に、(親form が(から)階層的に取り出せるので)有利。 蛇足 質問:Question
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
チェックボックスの名前+aがラジオボタンという法則性があるなら 以下のような感じにしてみてください <script language=javascript> function question(obj){ f=obj.form for(i=0;i<f.length;i++){ if(f[i].name==obj.name+"a") f[i].disabled=!obj.checked } } </script> <form name="form1"> <table><tr> <th><input type="checkbox" name="q1_1" value="" onClick="question(this)">質問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>
お礼
早速の回答ありがとうございます。 (2)が良さげですね。