[英]JQuery $().each exiting too early
我正在使用下面的功能来验证Web表单上的几个输入字段。 该函数使用jQuery .each()
迭代遍历字段。 ValidateInput
函数验证每个单独的输入字段,并返回true或false。
function ValidateForm() {
var result = true;
$('[data-regex]').each(function() {
result = result && ValidateInput(this);
// return true;
});
if ( result == false ) {
$(".alert").show();
}
return result;
}
我遇到的问题是,一旦任何单个输入字段.each()
通过.each()
, .each()
就会提前终止。 我知道如果function()
返回false,则.each()
将终止,但我看不到我是怎么做的。 我什至尝试添加一个显式的return true;
作为function()
的最后一行,但这没有区别。
为了完整ValidateInput
,这里是ValidateInput
:
function ValidateInput(thisInput) {
var fieldName = $(thisInput).attr('name');
var fieldValue = $(thisInput).val();
var regex = $(thisInput).attr('data-regex');
console.log('validating field "' + fieldName + '" value "' + fieldValue + '" with regEx "' + regex + '"';
var re = new RegExp(regex);
var result = re.test(fieldValue);
if ( result ) {
console.log('- passed');
$(thisInput.closest(".form-group")).addClass("has-success").addClass("has-feedback")
} else {
console.log('- failed');
$(thisInput.closest(".form-group")).addClass("has-error").addClass("has-feedback")
};
return result;
}
调用ValidateForm
的代码如下:
<input type="submit" name="ct108" value="Save User" onclick="return ValidateForm();" />
我想念什么?
您的ValidateInput
方法在第一个未通过验证的方法之后停止处理,因为此行:
result = result && ValidateInput(this);
&&
工作方式是,如果左侧的项目为true,则将右侧的值作为值返回,否则将左侧的值作为值返回。
您可以通过翻转以下内容来确保每个内容均得到处理:
result = ValidateInput(this) && result;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.