取消选中单选按钮是错误的

时间:2012-10-24 20:03:32

标签: javascript jquery forms radio-button

看看这个小提琴:http://jsfiddle.net/5rmEe/

目标是在用户点击它时取消选中单选按钮(如果已选中)并检查它是否未被选中

但似乎点击事件会触发两次,使得检查/取消检查非常错误......

我尝试了

的组合
e.stopPropagation();
e.preventDefault();

命令,但每个命令都会导致不同的错误......

我将如何实现此目标并相应地修复该代码?

3 个答案:

答案 0 :(得分:3)

我同意其他所有人都认为复选框会更好。

然而,话虽如此,这里可能对你有用。首先,单选按钮上的checked属性标记为已选中。因此,要删除检查,您必须删除该属性。但是,当单击单选按钮时,它想要返回该属性。

我的解决方案实际上更像是一个黑客攻击。我正在添加另一个属性并将其用作标志来确定是否删除或添加checked属性。 HTH

$('input[type=radio]').each(function(){
  var input = $(this);
  input.click(function(e){
      if(input.attr('cval')==='1'){
          input.attr('cval', '0');
          input.removeAttr('checked');
      }
      else{
          input.attr('cval', '1');
          input.attr('checked', 'checked');
      }
  });
});​

答案 1 :(得分:1)

为什么不将复选框设置为看起来像单选按钮。这样你就能充分利用两者。你正在使用复选框,而你的老板仍然没有线索;)

http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

如果你开始寻找这个概念,那里有很多例子。你会想在这里做相反的事情但是例子是一样的。

Can you style an html radio button to look like a checkbox?

答案 2 :(得分:0)

你需要一个复选框 - 这就是它们的用途。用户对标准控件的行为方式的期望是一个坏主意。