プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

やりたい事
(1)ラジオボタン【小学校】:小学校のみ入力可
(2)ラジオボタン【中学校】:中学校(市立・私立)のみ入力可
(3)ラジオボタン【全ての学校】:小中すべて入力可

(1)と(2)は動作していると思います。
(3)を実現するにはどうすればいいのでしょうか?

よろしくお願いします。

<html>
<head>
<title>ラジオボタンが選択されたらチェックボックス・ボタンを入力可能にする</title>
<script Language="JavaScript"><!--
function setRTF(f,n){
for(var i=0; i<f.length; i++){
var p=f[i].parentNode;
var pid="";
while(p){
if(p.nodeName=="TD"){pid=p.id;break;}
p=p.parentNode;
}
if(f[i].type=="checkbox" || f[i].type=="button") f[i].disabled=pid!=n;
}
}
function allcheck(obj,flag){
var target=obj.parentNode.getElementsByTagName("input");
for(var i=0;i<target.length;i++){
if(target[i].type=="checkbox") target[i].checked=flag;
}
}
// --></script>
</head>
<body>
<form>
<table border="1" width="303">
<tr>
<td width="89"><input type="radio" name="mm" onClick="setRTF(this.form,'aa')">小学校</td>
<td width="90"><input type="radio" name="mm" onClick="setRTF(this.form,'bb')">中学校</td>
<td width="102"><input type="radio" name="mm" onClick="setRTF(this.form,'xx')">全ての学校</td>
</tr>
<tr>
<td id="aa" rowspan="2" width="89">
<input type="checkbox" name="aa[]" value="1" disabled>A小学校<br>
<input type="checkbox" name="aa[]" value="2" disabled>B小学校<br>
<input type="checkbox" name="aa[]" value="3" disabled>C小学校<br>
<input type="button" value="全選択" onClick="allcheck(this,true)"/ disabled ><br>
<input type="button" value="全解除" onClick="allcheck(this,false)" disabled />
</td>
<td id="bb" width="90">
市立<br>
<input type="checkbox" name="bb[]" value="1" disabled>A中学校<br>
<input type="checkbox" name="bb[]" value="2" disabled>B中学校<br>
<input type="checkbox" name="bb[]" value="3" disabled>C中学校<br>
<input type="button" value="全選択" onClick="allcheck(this,true)" disabled /><br>
<input type="button" value="全解除" onClick="allcheck(this,false)" disabled />
</td>
<td id="cc" rowspan="2" width="102">
</td>
</tr>
<tr>
<td id="bb" width="90">
私立<br>
<input type="checkbox" name="cc[]" value="1" disabled>A中学校<br>
<input type="checkbox" name="cc[]" value="2" disabled>B中学校<br>
<input type="checkbox" name="cc[]" value="3" disabled>C中学校<br>
<input type="button" value="全選択" onClick="allcheck(this,true)" disabled /><br>
<input type="button" value="全解除" onClick="allcheck(this,false)" disabled />
</td>
</tr>
</table>
</form>
</body>
</html>

A 回答 (2件)

現状のスクリプトを生かすなら・・・



全ての学校の時にはaa,bbの両方を引数に渡すようにでもしてあげて(カンマ区切りなどが良いかも)、受ける側のfunctionでは、引数のなかでidと合致する部分があれば、disable=falseになるようにでもしてあげればよいのでは?

こんな感じでしょうか?
if(f[i].type=="checkbox" || f[i].type=="button") f[i].disabled= !(n.indexOf(pid)>-1);
    • good
    • 0

#1です。



f[i].disabled = n.indexOf(pid)==-1
で、よかったみたいですね。(もとのままでもOKですが…)
    • good
    • 0

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