スマホに会話を聞かれているな!?と思ったことありますか?

複数のラジオボタンの中から1つを選択すると、その行の5つのチェックボックスが有効になる方法を教えていただけないでしょうか。

1つのラジオボタンでならなんとか出来たのですが、
複数になるとどうもうまくいきません。
検索してはみたのですが、これといったものがなく質問することにしました。

以下のソースは単発で動いた時のものです。

<html>
<head>
<script type="text/javascript">
function checkfunc() {
for(i=0; i<5; i++) {
document.myform.chk1[i].disabled = !(document.myform.yesno.checked);
}
}
</script>
</head>
<body onLoad="checkfunc();">
<form name="myform">
<input type="radio" name="yesno" value="1" onClick="checkfunc();">ラジオボタン
<input type="checkbox" name="chk1" value="0">チェックボックス0
<input type="checkbox" name="chk1" value="1">チェックボックス1
<input type="checkbox" name="chk1" value="2">チェックボックス2
<input type="checkbox" name="chk1" value="3">チェックボックス3
<input type="checkbox" name="chk1" value="4">チェックボックス4
</form>
</body>
</html>


希望のイメージとしてはこんな感じです↓

○ラジオボタン
□チェックボックス □チェックボックス □チェックボックス □チェックボックス □チェックボックス

◎ラジオボタン
□チェックボックス □チェックボックス □チェックボックス □チェックボックス □チェックボックス

○ラジオボタン
□チェックボックス □チェックボックス □チェックボックス □チェックボックス □チェックボックス


申し訳ないのですが、どなたか教えていただけないでしょうか。

A 回答 (2件)

たとえば、divなどでグループをつくっておいて処理するとか・・・



<script>
window.onload=function(){
checkfunc()
}
function checkfunc(){
var f=document.getElementById("hoge");
for(var i=0;i<f.length;i++){
if(f[i].type=="checkbox") f[i].disabled=true;
}
for(var i=0;i<f.length;i++){
if(f[i].type=="radio" && f[i].checked){
var n=f[i].parentNode.firstChild;
while(n){
if(n.nodeName=="INPUT" && n.type=="checkbox") n.disabled=false;
n=n.nextSibling;
}
}
}
}
</script>
<form id="hoge">
<div>
<input type="radio" name="yesno" value="1" onclick="checkfunc()">ラジオボタン1
<input type="checkbox" name="chk[1][]" value="0">チェックボックス0
<input type="checkbox" name="chk[1][]" value="1">チェックボックス1
<input type="checkbox" name="chk[1][]" value="2">チェックボックス2
</div>
<div>
<input type="radio" name="yesno" value="1" onclick="checkfunc()">ラジオボタン2
<input type="checkbox" name="chk[2][]" value="0">チェックボックス0
<input type="checkbox" name="chk[2][]" value="1">チェックボックス1
<input type="checkbox" name="chk[2][]" value="2">チェックボックス2
</div>
<div>
<input type="radio" name="yesno" value="1" onclick="checkfunc()">ラジオボタン3
<input type="checkbox" name="chk[3][]" value="0">チェックボックス0
<input type="checkbox" name="chk[3][]" value="1">チェックボックス1
<input type="checkbox" name="chk[3][]" value="2">チェックボックス2
</div>
</form>
    • good
    • 0

サンプルです



<html>
<head>
<title></title>
</head>
<body>

<div id="sample">
<p>
<input type="radio" name="yesno" onclick="checkfunc();">ラジオ1<br>
<input type="checkbox" name="chk1" value="0">チェックボックス0
<input type="checkbox" name="chk1" value="1">チェックボックス1
<input type="checkbox" name="chk1" value="2">チェックボックス2
<input type="checkbox" name="chk1" value="3">チェックボックス3
<input type="checkbox" name="chk1" value="4">チェックボックス4
</p>
<p>
<input type="radio" name="yesno" onclick="checkfunc();">ラジオ2<br>
<input type="checkbox" name="chk2" value="0">チェックボックス0
<input type="checkbox" name="chk2" value="1">チェックボックス1
<input type="checkbox" name="chk2" value="2">チェックボックス2
<input type="checkbox" name="chk2" value="3">チェックボックス3
<input type="checkbox" name="chk2" value="4">チェックボックス4
</p>
</div>

<script type="text/javascript">
checkfunc();
function checkfunc(){
var list = document.getElementById('sample').getElementsByTagName('input');
var flag;
for(var i=0;list[i];i++) {
if(list[i].type == 'radio'){
flag = list[i].checked;
continue;
}
list[i].disabled = ! flag;
}
}
</script>
</body>
</html>
    • good
    • 0

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


おすすめ情報