如果被另一台收音机禁用,如何取消选中一个单选按钮?

时间:2011-11-13 00:33:19

标签: jquery radio uncheck

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不受控制。 (我希望这是有道理的。)

我做错了什么?

2 个答案:

答案 0 :(得分: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 bug。但不要担心;)

a little fiddle for you ^^

答案 1 :(得分:0)

过去我不得不匆匆学习这样的东西:诀窍是制作一系列单选按钮:

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')。click();