【问题标题】:unchecking radio button is buggy取消选中单选按钮是错误的
【发布时间】:2012-10-24 20:03:31
【问题描述】:

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

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

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

我尝试了一个组合

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

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

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

【问题讨论】:

  • 我很困惑。这就是单选按钮默认的工作方式。你想做什么?
  • 默认情况下没有,如果您单击选中的单选按钮,它不会取消选中...我正在尝试取消选中如果单击
  • 对。那么为什么不使用复选框呢?
  • 尝试使用复选框。这将更适合您的要求
  • 我必须使用单选按钮,这是要求(不要问)...请回答单选按钮

标签: javascript jquery forms radio-button


【解决方案1】:

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

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

我的解决方案实际上更像是一个 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');
      }
  });
});​

【讨论】:

  • 我打算建议使用隐藏字段来跟踪单选按钮的所需状态。从来没有想过只是设置一个属性。太棒了!
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我知道我知道,但我必须使用单选按钮(不是我的决定)......请回答单选按钮......另外这实际上不是真的,使用复选框意味着用户可以检查多个复选框,而使用单选按钮只允许他们检查一次,所以确实有区别......无论如何,不​​能使用复选框,所以请回答单选按钮
    • 这是一个循环论证,如果我听说过的话。
    猜你喜欢
    • 2012-01-23
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2012-01-31
    • 2023-03-29
    相关资源
    最近更新 更多