【问题标题】:Uncheck checkbox if checked with jquery如果使用 jquery 选中,则取消选中复选框
【发布时间】:2015-09-11 21:19:56
【问题描述】:

我连续有 3 个复选框,我发现这段代码很有效

$('input:checkbox').click(function () {
    $(this).closest('tr').find('input:checkbox').prop('checked', false);
    $(this).prop('checked', true);
});

但是,我有一个业务需求,我被告知如果有人点击了已选中的复选框,则必须取消选中。是的,我知道单选按钮通常用于“仅允许选择一项”,但是即使单选按钮也不是您可以单击“取消选择”的东西

复选框更自然地能够取消选择,但是使用我的功能,如果已经选择并单击,我会尝试取消选择,它总是转到 else 语句

$('input:checkbox').click(function () {
    //alert('c');
  $(this).closest('tr').find('input:checkbox').prop('checked', false);

  if ($(this).checked)
  {
      alert('f');
      $(this).prop('checked', false);
  }
  else {
      alert('t');
      $(this).prop('checked', true);
  }

});

总结

有 3 个复选框,目前我的功能只允许检查其中的 1 个。但是现在我需要能够点击当前选中的复选框并取消选中它

【问题讨论】:

  • 你想要什么?分部分和更好的方式解释。
  • 有3个复选框,目前我的功能只允许检查其中1个。但是现在我需要能够单击当前选中的复选框并取消选中它
  • 用$(this).closest('tr').find('input:checkbox').prop('checked', false); 取消选中单击的复选框,这就是为什么它总是转到else 语句
  • 那么为什么不能只使用单选按钮呢?如果您只希望每行选择 1 个复选框,这正是单选按钮的作用。
  • 是的,我明白这一点,所以我确实想使用该代码,但在它周围包裹一个条件,检查它复选框已被选中并被点击,因为我确实需要允许取消选择所有他们

标签: javascript jquery html checkbox


【解决方案1】:

在该行的复选框上设置checked = false 时,只需省略单击的复选框,这样它的行为就会像一个常规复选框,例如:

$(this).closest('tr').find('input:checkbox').not(this).prop('checked', false);

Here's a fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多