• ベストアンサー

一方のチェックボックスのON/OFFに応じてもう一方をON/OFFに

文末のように、「親」「子」のチェックボックスがあります。 規定値は双方ともにONです。 「親」のチェックがOFFになったら、「子」は無効(disable)に、 再び「親」のチェックがONになったら、「子」はactiveにしたいです。 過去に本掲示板でご教示いただいたスクリプトを応用したら 何とか実現できたのですが、シンプルな動作なので もっと簡潔(2行位??)にできそうに思います。 いかがなものでしょうか? <html> <head> <script language="javascript" type="text/javascript"> function autochk(f,name){ var names=document.getElementsByName(name); for(var i=0; i<1; i++){ names[i].disabled = !f.checked; } } </script> </head> <body> <form id="query" name="query"> <input type="checkbox" name="oya" value="1" checked onclick="autochk(this,'ko');">親 <input type="checkbox" name="ko" value="1" checked>子</div> </form> </body> </html>

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

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

for出まわしているところをみるとどっちかというと 子供がいっぱいいるときの書式では? こんな感じですかね? <html> <head> <script language="javascript" type="text/javascript"> function autochk(f){ for(var i=0;i<f.form.length;i++){ if (f!=f.form.elements[i]){f.form.elements[i].disabled = !f.checked;} } } </script> </head> <body> <form> <input type="checkbox" name="oya" value="1" checked onclick="autochk(this);">親 <input type="checkbox" name="ko1" value="1" checked>子1 <input type="checkbox" name="ko2" value="1" checked>子2 <input type="checkbox" name="ko3" value="1" checked>子3 <input type="checkbox" name="ko4" value="1" checked>子4 </form> </body> </html>

litton101
質問者

お礼

yambejpさん、PHPの方でもいつもお世話になってます。 実は、投稿後に事情(というか仕様)が変わり、 子が複数になることになりました(^^;。 結果的に、今回ご教示いただいたものが ドンピシャです。 ありがとうございました。

その他の回答 (2)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.3

name ではなく id を使ってみましょう。 name は複数の要素が同じ name を持つことがありえますが id は重複しないので(正確には、重複してはいけないので) ピンポイントで処理ができます。 <html> <head> <script language="javascript" type="text/javascript"> function autochk(f,id){ document.getElementById(id).disabled = !f.checked; } </script> </head> <body> <form id="query" name="query"> <input type="checkbox" name="oya" id="oya" value="1" checked onclick="autochk(this,'ko');">親 <input type="checkbox" name="ko" id="ko" value="1" checked>子</div> </form> </body> </html>

litton101
質問者

お礼

UKYさん、ご教示ありがとうございます。 実はid と nameの違い(というか使い分け)がよくわかっていなかったですが、そういう 趣旨もあるのですね。 大変勉強になりました。

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

function autochk(f,name){ f.form[name].disabled = !f.checked; }

litton101
質問者

お礼

BLUEPIXYさん、いつもお世話になっております。 さすが(^^)、三行に縮めていただきありがとうございます。大変勉強になります。

関連するQ&A