次のコードを使用して、ページの読み込み時にチェックボックスがチェックされているかどうかをテストしています。そうである場合、特定の追加フィールドが表示されます (myfield と呼ばれます)。
<style>
#myfield {
display: none;
}
</style>
<input type="checkbox" id="mycheckbox" name="mycheckbox" />
<input type='text' id='myfield' name='myfield' />
<script>
if ($("#mycheckbox").is(":checked")) {
document.getElementById("id").style.display="block";
}
</script>
ただし、これはページが読み込まれ、チェックボックスが既にチェックされている場合にのみ機能します。ページの読み込み時にボックスがチェックされていない場合、ライブでは機能せず、ボックスをクリックします。ページをリロードしなくても、ボックスが「チェック」されたときに隠しフィールドがすぐに表示されるようにします。次に、ボックスがチェックされていないときに myfield をすぐに非表示にします。
誰でもこれを行うためのより良い/適切な方法を指摘できますか?
さらに:
注: ラベルを使用して CSS でこれを行う方法は知っていますが、それ以外の場合は JavaScript を使用する必要があります。
CSS だけを使用して最新のブラウザーで問題なく動作するのは次のとおりです: http://jsfiddle.net/3KTC3/
CSSのみのjsfiddleコードは次のとおりです。
<style type="text/css">
.label-for-check {
display:none;
}
.check-with-label:checked + .label-for-check {
display:block;
}
</style>
<div>
<input type="checkbox" id="check" class="check-with-label" />
<label for="check" class="label-for-check">
<br /><br />MyField<br />
<input type='text' id='myfield' name='myfield' size='10' />
</label>
<div>