JS:通过复选框数组的循环函数计数不正确

JS: looping function through checkbox array not counting properly

我想验证一系列复选框的输入。必须至少有一个复选框 selected,否则用户会收到 select 个复选框的提醒。但是,除非所有复选框都已 selected,否则会出现警告。

我知道问题出在我的 for 循环参数是如何设置的,但我不知道如何解决它。

for(var i=0;i<7;i++){
    if( !checkboxes[i].checked ){
        alert( 'You need to select at least one day!');
        checkboxes[i].focus();
        return false;
    }
}

您可以使用标志来设置验证状态,如果至少检查了 1 项,则将其设置为 true。

然后在循环之后检查是否设置了标志,否则没有选中复选框。

var valid = false;
for (var i = 0; i < checkboxes.length; i++) {
    if (checkboxes[i].checked) {
        valid = true;
        break;
    }
}

if (!valid) {
    alert('You need to select at least one day!');
    checkboxes[0].focus();
    return false;
}
    var clicked = false;
    $(".CheckBoxClass").each(function () {            
        if($(this).checked ) clicked = true;
     }
     if(clicked)
        return true;
     else ...

您想执行与您正在编写的代码相反的操作。如果未选中当前复选框,即未选中任何复选框,则您当前的代码会闪烁警报。你可以修改成这样:

var isChecked = false;
for(var i=0;i<7;i++){
    if( checkboxes[i].checked ){
      isChecked = true;
    }
}

if ( !isChecked ) {
    alert( 'You need to select at least one day!');
    checkboxes[0].focus();
    return false;
}