繁体   English   中英

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

[英]JS: looping function through checkbox array not counting properly

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

我意识到问题在于如何设置我的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;
    }
}

如果选中了至少一项,则可以使用标志来设置验证状态并将其设置为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 ...

您想做与编码相反的事情。 如果未选中当前复选框,即,如果未选中ANY复选框,则当前代码将闪烁警报。 您可以将其修改为如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM