0

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

目标是在用户单击单选按钮时取消选中它,如果它被选中,如果它没有被选中,则检查它

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

我尝试了

e.stopPropagation();
e.preventDefault();

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

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

4

3 回答 3

3

我同意其他所有人的观点,即复选框会更好。

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

我的解决方案实际上更像是一个 hack。我正在添加另一个属性并将其用作标志来确定是删除还是添加选中的属性。高温高压

$('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');
      }
  });
});​
于 2012-10-24T20:19:31.430 回答
1

为什么不将复选框设置为看起来像单选按钮。这样你就可以两全其美了。您正在按预期使用复选框,而您的老板仍然没有线索;)

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

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

您可以将 html 单选按钮设置为看起来像复选框吗?

于 2012-10-24T20:23:35.233 回答
0

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

于 2012-10-24T20:12:20.673 回答