如何取消选中另一组中的某个单选按钮

问题描述:

我有2组单选按钮。当点击组中的按钮时,应该取消选中另一组中的任何按钮,反之亦然。 我在下面试过,只有一次。 我认为最聪明的方式是click()。但我无法理解它。有什么建议么?如何取消选中另一组中的某个单选按钮

function uncheckRadioBtnSet(){ 
    if ($('[name="a"]').is(':checked')){ 
    $('input[name="b"]').removeAttr('checked'); 
    $(this).off('click'); 
    }else{ 
    $('input[name="a"]').removeAttr('checked'); 
    $(this).off('click'); 
    } 
} 

$("input[name='a']").click(function(){ 
    uncheckRadioBtnSet(); 
}); 
$("input[name='b']").click(function(){ 
    uncheckRadioBtnSet(); 
}); 

<input type="radio" name="a" value="1"><br> 
<input type="radio" name="a" value="2"><br> 
<input type="radio" name="a" value="3"><br> 

<h6> separator </h6> 

<input type="radio" name="b" value="4"><br> 
<input type="radio" name="b" value="5"><br> 
<input type="radio" name="b" value="6"><br> 
+1

为什么他们需要在2组,如果他们需要显示像一个组的行为? –

+0

谢谢,很好的问题。这两个组在页面上不能以多种原因组合。否则就会很清楚。 – Ray

您可以使用此:

$("input[name='a']").click(function(){ 
    $('input[name="b"]').prop("checked", false); 
}); 
$("input[name='b']").click(function(){ 
    $('input[name="a"]').prop("checked", false); 
}); 

演示:https://jsfiddle.net/iRbouh/xn61vs1q/

如果我们对所有单选按钮使用相同的名称这将是确定

<input type="radio" name="a" value="1"><br> 
 
<input type="radio" name="a" value="2"><br> 
 
<input type="radio" name="a" value="3"><br> 
 
<h6> 
 
separator 
 
</h6> 
 
<input type="radio" name="a" value="4"><br> 
 
<input type="radio" name="a" value="5"><br> 
 
<input type="radio" name="a" value="6"><br>

根据新的要求试试这个nanocode :)

$("input[name='a'], input[name='b']").click(function(){ 
    $('input[name="'+{b: 'a',a: 'b'}[this.name]+'"]').prop("checked", false); 
}); 

Plunker


更新代码

$("input[name='item_meta[313]'], input[name='item_meta[314]']").click(function(){ 
    $('input[name="'+{'item_meta[313]' : 'item_meta[314]', 'item_meta[314]' : 'item_meta[313]'}[this.name]+'"]').prop("checked", false); 
}); 

然而,可读性的原因,你也可以这样写代码:

var obj = { 
    'item_meta[313]' : 'item_meta[314]', 
    'item_meta[314]' : 'item_meta[313]' 
} 
$("input[name='item_meta[313]'], input[name='item_meta[314]']").click(function(){ 
    $('input[name="'+obj[this.name]+'"]').prop("checked", false); 
}); 

See this updated Plunker

+0

伟大的纳代码。谢谢。它似乎不适用于我的按钮所具有的名称。我不能改变他们,因为他们是这样设计的。名字就像这个item_meta [313] .. – Ray

+0

你的实际代码中有多少组选择框?在你的问题中,你提到了2,即'a'和'b' –

+0

是的。在这个设置中只有2个组。 – Ray