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

时间:2015-06-01 03:46:05

标签: javascript checkbox

我想在一系列复选框上验证输入。必须至少选中一个复选框,否则用户会收到选择一个的警报。但是,除非选中所有复选框,否则会显示警告。

我意识到问题是我的for loop params是如何设置的,但我无法弄清楚如何解决它。

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;
    }
}

3 个答案:

答案 0 :(得分:3)

如果选中至少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;
}

答案 1 :(得分:1)

    var clicked = false;
    $(".CheckBoxClass").each(function () {            
        if($(this).checked ) clicked = true;
     }
     if(clicked)
        return true;
     else ...

答案 2 :(得分:1)

您希望与您编码的内容相反。如果未选中当前复选框,则当前代码会闪烁警报,即,如果未选中任何复选框,则会闪烁警报。您可以将其修改为以下内容:

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;
}