【问题标题】:jQuery: Verify If one of multiple required checkboxes is/are checkedjQuery:验证是否选中了多个必需的复选框之一
【发布时间】:2012-03-06 23:43:31
【问题描述】:

我有一个包含多组复选框(除其他外)的表单。其中一些组是必填字段(该组中至少需要选中一个复选框)。

我可以判断一个组是否选中了一个复选框,但我没有将其设为强制性。此外,我需要获得一个带有所选复选框值的长字符串。我需要有一个字符串,如果用户检查,比如 group1 中的前 3 个复选框,则字符串为:
“零 | 1 值 | 2 值”

代码是我原来的简化版本。这是 jFiddle:http://jsfiddle.net/QyY2P/1/

另外,为了您的方便,我还在这里包含了代码:

jQuery

function countChecked() {
    //Group 1
    var n = $("#group1 input:checked").length;
    $("#count").text(n + (n <= 1 ? " is" : " are") + " checked!");
    $("#group1 input:checked").each(function() {
        txt += ($(this).val() + " | ");
        $("#selection1").text(txt);
        alert($(this).val() + " | ");
    });


    //Group 2
    var n = $("#group2 input:checked").length;
    $("#count").text(n + (n <= 1 ? " is" : " are") + " checked!");
    $("#group2 input:checked").each(function() {
        txt += ($(this).val() + " | ");
        $("#selection3").text(txt);
        alert($(this).val() + " | ");
    });
}

countChecked();
$(":checkbox").click(countChecked);

HTML

<form>
  <div id="group1">
    <p> *Please select a box (Mandatory)</p>
    <input type="checkbox" name="ckb_unit[]" value="zero" />
    <input type="checkbox" name="ckb_unit[]" value="1 val" />
    <input type="checkbox" name="ckb_unit[]" value="2 val" />
    <input type="checkbox" name="ckb_unit[]" value="3 val" />
    <input type="checkbox" name="ckb_unit[]" value="4 val" />
  </div>


  <div id="group2">
      <p>Please select a box</p>
    <input type="checkbox" name="ckb_unit[]" value="zero" />
    <input type="checkbox" name="ckb_unit[]" value="A" />
    <input type="checkbox" name="ckb_unit[]" value="B" />
    <input type="checkbox" name="ckb_unit[]" value="C" />
    <input type="checkbox" name="ckb_unit[]" value="D" />
  </div>

  <div id="group3">
    <p>*Please select a box (Mandatory)</p>
    <input type="checkbox" name="ckb_unit[]" value="zero" />
    <input type="checkbox" name="ckb_unit[]" value="1 A" />
    <input type="checkbox" name="ckb_unit[]" value="2 B" />
    <input type="checkbox" name="ckb_unit[]" value="3 C" />
    <input type="checkbox" name="ckb_unit[]" value="4 D" />
  </div>
</form>

<!-- For debugging purposes -->
<br/>
<div id="count"></div>
<div id="selection1"></div>
<div id="selection3"></div>

PS。我是一个初学者,也许你注意到了我不那么优雅的编码>_

【问题讨论】:

  • @roobeedeedada 谢谢你roobeedeedada!我仍在完善 jquery 代码,但这是我目前所拥有的:jsfiddle.net/QyY2P/3

标签: javascript jquery input checkbox


【解决方案1】:

您可以通过在用户点击提交时检查 n 是否为 0 并以某种方式吸引用户的注意力(例如附加错误消息)来强制执行此操作。我说的是这个:

var n = $("#group1 input:checked").length;

查看 JSFiddle,您似乎没有将 txt 声明为变量,所以这对我有用:

//Group 1
var txt = ""; // initialise txt with an empty string, so you can append to it later
var n = $("#group1 input:checked").length;
$("#count").text(n + (n <= 1 ? " is" : " are") + " checked!");
$("#group1 input:checked").each(function() {
    txt += ($(this).val() + " | ");
    $("#selection1").text(txt);
    alert($(this).val() + " | ");
});

【讨论】:

  • 如何删除最后一个模式:“|”? . Ej。如果用户选择 2 chkbx,我希望字符串为“零 | 1 val”而不是“零 | 1 val |”?
  • 将您的值存储在一个数组中,然后使用 .join(" | ") 方法将它们变成一个大字符串。这是一个有用的链接:w3schools.com/jsref/jsref_join.asp
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2017-01-21
相关资源
最近更新 更多