javascript - 如何在选中另一组单选按钮时取消选中一组单选按钮

标签 javascript jquery radio-button

我有两组单选按钮。单击组中的按钮时,应取消选中其他组中的任何按钮,反之亦然。 我在下面尝试过,但只能使用一次。 我认为最聪明的方法是 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>

最佳答案

试试这个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

关于javascript - 如何在选中另一组单选按钮时取消选中一组单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38411193/

相关文章:

javascript - 浏览器应用程序无法访问 loki.js

javascript - 在 javascript 的闭包中定义变量之前访问变量

jquery - 当div的内容改变时如何中断?

html - 列表中带有单选按钮的图像对 Angular 线显示

javascript - 用于克隆单选按钮的 jQuery .show() 和 .hide()

javascript - HTML、Javascript 中的自定义事件

javascript - 在 preventDefault 之后提交表单直到单击提交按钮才起作用

javascript - 更改 ThickBox 的标题

jquery - 如何使用 jQuery 插件突出显示 DataTable 的过滤文本?

css - 使用复选框 hack 的 CSS 选项卡问题 - 仅 css