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

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にチェックを入れたくない。 (私はこれが理にかなってほしい)

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

0
別のラジオが選択されている場合、以前にチェックされたラジオボタンが選択解除されるようにしたいのですか?
追加された 著者 David Thomas,

2 答え

$('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バグのような臭いがあります。しかし、それについて心配しないでください;)

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

1
追加された

私は過去に急いでそのようなことを学ばなければならなかった:トリックはラジオボタンのファミリーを作る:

family NAME
  child ID0
  child ID1
  child IDn

特定のケースでは、あなたは次のようなものを探しているかもしれません(性別):

<input type="radio" name="gender" id='male' value="M" > Male
<input type="radio" name="gender" id='female' value"F" > Female

そして、例えば、

<input type="radio" name="likes" id='tv' value="TV" > Watchs TV
<input type="radio" name="likes" id='radio' value="radio" > Listens to Radio

ファミリのラジオボタンをクリックすると、ラジオボタンがクリックされると、もう一方は自動的にクリックされなくなります。

次に、どちらかをチェックするだけです

$('#male').is(':checked') .... $('#female').is(':checked') .....

また、次のものをクリックすることで、無効にしたり無効にしたり、無効にすることもできます:$( '#male')。

0
追加された