gpt4 book ai didi

javascript - JQuery $().each 退出太早

转载 作者:行者123 更新时间:2023-12-01 02:19:59 25 4
gpt4 key购买 nike

我正在使用下面的函数来验证网络表单上的多个输入字段。该函数使用 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()就会提前终止。我知道如果 function() 返回 false,.each() 将终止,但我不知道我是如何做到这一点的。我什至尝试添加显式的 return true; 作为 function() 的最后一行,但这没有什么区别。

为了完整起见,这里是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);

&& 的工作方式是,如果左侧的项为真,则将右侧的值作为值返回,否则将左侧的值作为值返回。

你可以保证每一个都通过翻转来处理:

result = ValidateInput(this) && result;

关于javascript - JQuery $().each 退出太早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49269187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com