別のラジオで無効になっている場合、単一のラジオボタンをオフにするにはどうすればよいですか?

jQuery初心者、ここに。私はこれを働かせることはできません。これは私が以前のラジオボタンに基づいてラジオボタンを無効にするために使用しているものです。

$('document').ready(function() {
    $('input[name="a"]').change(function() {
        if($(this).val() == '1') {
            $('input[name="b"]').removeAttr('disabled');
        } else {
            $('input[name="b"][value="1"]').attr('disabled','disabled');
        }
    });
});

そして:

<input type="radio" name="a" value="1" /> A-1
<input type="radio" name="a" value="2" /> A-2

<input type="radio" name="b" value="1" /> B-1
<input type="radio" name="b" value="2" /> B-2

だから私がA-2をチェックすると、B-1は無効になります。しかし、まずB-1にチェックを入れてからA-2をチェックしたら、B-1がチェックされないようにしたいと言います。私はこれを追加しようとしました:

if($('input[name="b"][value="1"]').is(':disabled')) {
    $('input[name="b"][value="1"]').removeAttr('checked');
}

それは仕事をしますが、最初にチェックしておけばB-2のチェックを外します。私はB-1にチェックを入れたくない。
(私はこれが理にかなってほしい)

私は間違って何をしていますか?

ベストアンサー

$('input[name="a"]').change(function() {
    var $b = $('input[name="b"]');
    if (this.value == 1) {
        $b.removeAttr('disabled');
    }
    else {
        $('input[name="b"][value="1"]:checked').removeAttr('checked'); //the selector behavior is funky here...
        $b.attr('disabled', true);
    }
});

これはあなたが望むように機能します。

[value =
“1”]セレクタに問題があります(チェックなしで使用した場合)、jqueryバグのような臭いがあります。しかし、それについて心配しないでください;)

あなたのための小さなフィドル ^^

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です