0

私はJQueryを初めて使用し、1つのメインチェックボックスがオンになっているときに複数のチェックボックスを無効にしようとしている問題を修正するのに苦労しています。

1つのプライマリチェックボックスと3つのセカンダリチェックボックスを含むフォームがあります。プライマリチェックボックスがチェックされている場合、他のすべてのセカンダリチェックボックスは無効になっていますが、デフォルトでチェックされたステータスである必要があります。また、プライマリチェックボックスがオフになっている場合、無効にされていた他のすべてのセカンダリチェックボックスが有効になり、すべてチェックする必要があります。デフォルトでは、ユーザーがフォームにアクセスしたときに、プライマリチェックボックスをオンにする必要があるため、他の3つをオンにして無効にする必要があります。

これは私のコードです:

<s:checkbox id="primary_CB" name="primaryCB" value="true"/>Primary checkbox
<s:checkbox cssClass="secondary_CB" name="secondary_CB1"/>Secondary checkbox1
<s:checkbox cssClass="secondary_CB" name="secondary_CB2"/>Secondary checkbox2
<s:checkbox cssClass="secondary_CB" name="secondary_CB3"/>Secondary checkbox3

私のJQueryコード:

$('#primary_CB').click(function () {
if ($(this).attr('checked')) {
$(".secondary_CB").attr('disabled', 'disabled');
} else {
    $(".secondary_CB").removeAttr('disabled');
    }
});

ただし、私のコードは奇妙な方法で機能します。初めてフォームを表示するときは、4つのチェックボックスがすべてオンになっており、無効になっているものはありません。無効化機能が実行される主要なチェックボックスをオフ/チェックし直した場合のみ。また、再度無効にすると、すべてのセカンダリチェックボックスが自動的にオフになります。

誰か助けてもらえますか?

4

2 に答える 2

1

私があなたの問題を正しく理解していれば、これはうまくいくはずです:

$("#primary_CB").click(function() {
    $("input.secondary_CB").prop("disabled", !this.checked);
});

1.6未満のjQueryの場合

$("#primary_CB").click(function() {
    $("input.secondary_CB").attr("disabled", !this.checked);
});
于 2012-08-27T12:48:53.780 に答える
0
$('#primary_CB').click(function () {
if ( !$(this).is ( ":checked" ) )
{
$(".secondary_CB").attr ( "disabled" , true );
} else {
    $(".secondary_CB").removeAttr ( "disabled" );
    }
});
于 2012-08-27T12:41:52.397 に答える