• ベストアンサー

ラジオボタンを一括で操作する方法を教えてください。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>

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

スマートかどうかは判りませんが (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

wn981474
質問者

お礼

早速の回答ありがとうございます。 (2)が良さげですね。

その他の回答 (1)

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

チェックボックスの名前+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>