我想在一系列复选框上验证输入。必须至少选中一个复选框,否则用户会收到选择一个的警报。但是,除非选中所有复选框,否则会显示警告。
我意识到问题是我的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;
}
}
答案 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;
}