アプリ版:「スタンプのみでお礼する」機能のリリースについて

java script フォームのチェックボックス入力制限について

どなたかお教えください。
以下のコードを書き換えて、現状では1つのチェックボックスを複数にし(かつ、複数選択可にし)、チェックボックスをチェックした場合のみ「選択肢」ラジオボタンがアクティブになる仕様にしたいと考えております。
サイト上で見つけたサンプルコードをいじっているのですが、何分素人なのでうまく行きません。どなたか助けていただけると助かります。

よろしくお願いします。


<script type="text/javascript">
function fchk3(obj){
var frm=obj.form;
var len=frm.elements.length;
if(obj.checked==true){
for(var i=0; i<len; i++){
if(frm.elements[i].type=="radio"){
frm.elements[i].disabled=false;
}
}
}else{
for(var i=0; i<len; i++){
if(frm.elements[i].type=="radio"){
frm.elements[i].checked=false;
frm.elements[i].disabled=true;
}
}
}
}
</script>
<form name="form3" action="#">
<label for="chk3"><input type="checkbox" id="chk3" name="chk3" onclick="fchk3(this)" checked="checked" />このボタンのチェックを外すとラジオボタンが無効化</label><br />
<label for="chk3_r1"><input type="radio" id="chk3_r1" name="r1" />選択肢</label>
</form>

A 回答 (2件)

下のようにグループごとにまとめて同じ<label>内に格納してしまって、


<form name="form3" action="#">
 <label for="chk1">
  <input type="checkbox" id="chk1" name="chk1" onclick="fchk(this)" checked="checked">
このボタンのチェックを外すとラジオボタンが無効化<br>
   <label for="chk1_r1"><input type="radio" id="chk1_r1" name="r1">選択肢</label>
   <label for="chk1_r2"><input type="radio" id="chk1_r2" name="r1">選択肢</label>
   <label for="chk1_r3"><input type="radio" id="chk1_r3" name="r1">選択肢</label>
 </label>
 <br>
 <label for="chk2">
 <input type="checkbox" id="chk2" name="chk2" onclick="fchk(this)" checked="checked">
このボタンのチェックを外すとラジオボタンが無効化<br>
  <label for="chk2_r1"><input type="radio" id="chk2_r1" name="r1">選択肢</label>
  <label for="chk2_r2"><input type="radio" id="chk2_r2" name="r1">選択肢</label>
  <label for="chk2_r3"><input type="radio" id="chk2_r3" name="r1">選択肢</label>
 </label>
 <br>
 <label for="chk3">
 <input type="checkbox" id="chk3" name="chk3" onclick="fchk(this)" checked="checked">
このボタンのチェックを外すとラジオボタンが無効化<br>
  <label for="chk3_r1"><input type="radio" id="chk3_r1" name="r1">選択肢</label>
  <label for="chk3_r2"><input type="radio" id="chk3_r2" name="r1">選択肢</label>
  <label for="chk3_r3"><input type="radio" id="chk3_r3" name="r1">選択肢</label>
 </label>
</form>

SCRIPTは下のようにしてはどうでしょう(全角空白は半角空白にして!)

<script type="text/javascript">
function fchk(obj){
 var input=obj.parentNode.getElementsByTagName("input");
 var len=input.length;
 if(obj.checked==true){
  for(var i=0; i<len; i++){
   if(input[i].type=="radio"){
   input[i].disabled=false;
   }
  }
 }else{
  for(var i=0; i<len; i++){
   if(input[i].type=="radio"){
   input[i].checked=false;
   input[i].disabled=true;
   }
  }
 }
}
</script>
    • good
    • 0

たとえばチェックボックスの名前を一緒にして、こんな風にやるとどうでしょう?



<script>
function checkfunc(obj){
var check_flg=true;
var f=obj.form;
for (var i=0;i<f.length;i++){
if(f[i].name==obj.name && f[i].checked){
check_flg=false;
break;
}
}
for (var i=0;i<f.length;i++){
if(f[i].type=="radio"){
f[i].disabled=check_flg;
}
}

}
</script>
<form>
<input type="checkbox" name="ch[]" onclick="checkfunc(this)" />ch1
<input type="checkbox" name="ch[]" onclick="checkfunc(this)" />ch2
<input type="checkbox" name="ch[]" onclick="checkfunc(this)" />ch3
<input type="radio" name="r1" disabled />ra1
<input type="radio" name="r1" disabled />ra2
<input type="radio" name="r1" disabled />ra3
</form>
    • good
    • 0
この回答へのお礼

動きました!
ありがとうございました ^^

お礼日時:2010/07/29 15:07

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