我有这个jQuery代码来检查结帐表单中的字段。它可以工作并完成它所需要的功能,但只要遇到第一个错误就停止检查字段:
$('#' + x + ' input.required-entry').each(function() {
var item = $(this);
if (item.val() === '' || item.is(':invalid')) {
item.addClass('field-error');
return isValid = false;
} else {
item.removeClass('field-error');
return isValid = true;
}
});
假设我填写了10个字段中的2个并尝试提交,此代码仅将第3个字段标记为不正确。目标是将所有未填充的字段标记为不正确。如果我删除了return isValid
行,则会将以下所有字段都标记为无效,但无论如何都会显示该表单,因为isValid
未更改。
有没有办法在点击第一个return isValid = false
后运行所有后续字段的代码?
答案 0 :(得分:0)
我在循环外引入一个变量,如果有任何不正确的话你会更新,然后按原样使用循环来更新类。
var areAnyIncorrect = false;
$('#' + x + ' input.required-entry').each(function() {
var item = $(this);
if (item.val() === '' || item.is(':invalid')) {
item.addClass('field-error');
areAnyIncorrect = true
} else {
item.removeClass('field-error');
}
});
return areAnyIncorrect;
答案 1 :(得分:0)
迭代所有项目,并针对每个项目设置isValid
标志。此函数将返回带有isValid
标志的所有值。
function checkItems(){
var items= [];
$('#' + x + ' input.required-entry').each(function() {
var item = $(this);
var itemId = item.attr('id');
var object = {
ItemId:itemId,
IsValid:true
};
if (item.val() === '' || item.is(':invalid')) {
item.addClass('field-error');
object.isValid=false;
items.push(object);
}
else {
item.removeClass('field-error');
items.push(object);
}
});
return items;
}