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;
}
我想验证一系列复选框的输入。必须至少有一个复选框 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;
}