- ベストアンサー
一方のチェックボックスの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>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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>
その他の回答 (2)
- UKY
- ベストアンサー率50% (604/1207)
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>
お礼
UKYさん、ご教示ありがとうございます。 実はid と nameの違い(というか使い分け)がよくわかっていなかったですが、そういう 趣旨もあるのですね。 大変勉強になりました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
function autochk(f,name){ f.form[name].disabled = !f.checked; }
お礼
BLUEPIXYさん、いつもお世話になっております。 さすが(^^)、三行に縮めていただきありがとうございます。大変勉強になります。
お礼
yambejpさん、PHPの方でもいつもお世話になってます。 実は、投稿後に事情(というか仕様)が変わり、 子が複数になることになりました(^^;。 結果的に、今回ご教示いただいたものが ドンピシャです。 ありがとうございました。