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

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

10-06 08:18