牛、豚、鶏、どれか一つ食べられなくなるとしたら?

下記のようにフォームがあります。

チェックボックスをクリックして始めて、
同列のラジオボタンが選択できるようにしたいと考えております。

現在は、質問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>

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/20 15:09

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報