【问题标题】:check if 1 of 2 check boxes per group is checked on form submit?检查表单提交时是否选中了每组 2 个复选框中的 1 个?
【发布时间】:2017-10-24 22:50:45
【问题描述】:

我有 8 个复选框,分成 2 个组。在第一组中,我有一个标记为 checkbox1 的复选框和一个标记为 checkbox2。我想要一个 JavaScript 代码,它可以让我能够检查表单提交是否已为每个组选中了这些复选框中的至少一个。

我不希望脚本只检查您是否只选中了一个复选框,因为这意味着用户不必检查另一组复选框中的至少一个复选框。

请问有谁知道我可以如何做到这一点,我是否走在正确的道路上?

$('#form_check').on('submit', function (e) {
  if ($("input[id=box1]:checked").length === 0) {
    if ($("input[id=box2]:checked").length === 1) {

    } else {
      if ($("input[id=box2]:checked").length === 0) {
        if ($("input[id=box1]:checked").length === 1) {    
          e.preventDefault();
          alert('no way you submit it without checking a box');
          return false;
        }
      }
    }
  }
});

【问题讨论】:

  • 所以,如果所有复选框都被选中,我的意思是所有 8 那么它应该返回 true 吗?
  • 否 8 个都不能选择,这些是是/否复选框,每组只能选择一个
  • 如果only one per group can be selected 那么为什么不为每个是/否对使用两个单选按钮呢?更有意义 + 做你需要的 + 做用户期望的。不要违背既定的惯例。

标签: javascript jquery


【解决方案1】:

这样做:

$("button").click(function(){
    var length = 0;  // initial length 

    $(".group").each(function(){ 
        // if box is checked, add 1, else 0
        length += ($(this).find("input:checked").length === 1);
    });

    // if there are as many box's checked as many groups, i.e. one checked box per group
    if(length === $(".group").length){
        alert("y");
    }else{
        alert("no");
    }
});

DEMO

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 2013-08-25
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2016-04-22
    • 2021-08-24
    相关资源
    最近更新 更多