看看这个小提琴:http://jsfiddle.net/5rmEe/
目标是在用户点击它时取消选中单选按钮(如果已选中)并检查它是否未被选中
但似乎点击事件会触发两次,使得检查/取消检查非常错误......
我尝试了
的组合e.stopPropagation();
e.preventDefault();
命令,但每个命令都会导致不同的错误......
我将如何实现此目标并相应地修复该代码?
答案 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/
如果你开始寻找这个概念,那里有很多例子。你会想在这里做相反的事情但是例子是一样的。
答案 2 :(得分:0)
你需要一个复选框 - 这就是它们的用途。用户对标准控件的行为方式的期望是一个坏主意。