提交前验证并检查每组中是否有2个复选框?

时间:2014-04-02 12:09:42

标签: javascript

我有8个复选框,在第一组中分成2组,我有一个复选框标记为checkbox1,一个复选框标记为checkbox2。

我想要一个javascript代码,这样我就可以检查表单提交是否已经为每个组检查了其中2个复选框中的至少一个。

复选框为yes,没有值,因此每组只能检查一个。

我不想要一个只检查你是否只检查过一个复选框的脚本,因为这意味着用户不必检查另一组复选框中的至少一个其他复选框。

我正在使用IE9,因此该脚本应与IE9兼容。

我该怎么做?

这是我的代码:

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

      e.preventDefault();
      alert('no way you submit it without checking a box');
      return false;
  }
});

2 个答案:

答案 0 :(得分:0)

这可能就是你要找的东西,如果不是让我知道的话,我会尝试把它整理得更好。

首先让我们整理一下这段代码。你似乎有一个疯狂的if语句,大多数都没有被终止。

第二,我想要检查是否按下并且至少按下了一个而不是两个都是印象。

$('#form_check').on('submit', function (e) {
if ($("input[id=checkbox1]:checked").length === 0 && $("input[id=checkbox2]:checked").length === 0) { // if neither is selected && means and
    e.preventDefault();
    alert('nothing selected');
    return false;
}
else if (($("input[id=checkbox1]:checked").length === 1 && $("input[id=checkbox2]:checked").length === 0) || ($("input[id=checkbox2]:checked").length === 1 && $("input[id=checkbox1]:checked").length === 0)) { //if a is selected and b is not OR (||) b is selected but not a
        e.preventDefault();
        alert('congrats one or other of the check boxes is selected');
        return false;   
}
else{ //otherwise you must have selected both
    e.preventDefault();
    alert("you've managed to select BOTH yes and no");
    return false;
}
});

答案 1 :(得分:0)

您可以使用名为“required”

的类嵌入每个带有DIV的复选框组
<form id="form_check">
    <div class="required">
        <input type="checkbox" id="checkbox1" />Test 1
        <input type="checkbox" id="checkbox2" />Test 2
    </div>

    <div class="required">
        <input type="checkbox" id="checkbox3" />Test 3
        <input type="checkbox" id="checkbox4" />Test 4
    </div>
    <input type="submit" value="Submit" />
</form>

这个JavaScript(jQuery)将检查每个'required'组。您必须至少检查每个组的一个复选框。

$('#form_check').on('submit', function (e) {
    e.preventDefault();
    $('.required').each(function () {
        if ( $(this).find('input:checked').length <= 0 ) {            
            alert('no way you submit it without checking a box');
        }
    });
});

JSfiddle