我正在尝试进行一些表格验证,其中包括检查下拉菜单是否留空,检查所有输入区域是否都留空并验证电子邮件字段。我有根据输入返回true / false的函数。 我现在要做的是在一个函数中检查所有验证函数,如果是,我想打开一个模态窗口。 我的所有验证函数都返回true(正如所料,这样可以正常工作)但我的嵌套函数返回false?
function checkAll() {
if (ValidateEmail() && checkIfEmpty() && checkDrop()) {
console.log(true);
} else {
console.log(false);
}
}
function checkDrop() {
if ($("#hospitals").val() == null) {
console.log(false);
return false;
} else {
console.log(true);
return true;
}
}
function ValidateEmail() {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form1.email.value)) {
console.log(true);
return true;
} else {
console.log(false);
return false;
}
}
function checkIfEmpty() {
$('#form1 input').each(function () {
if (!$.trim(this.value).length) {
console.log(false);
return false;
} else {
console.log(true);
return true;
}
});
}
答案 0 :(得分:1)
您的checkIfEmpty
函数无法返回
你有一个$('#form1 input').each(function(){});
循环,这个循环中的返回不会传递给外部函数。基本上jQuery return true
函数中的.each
只停止当前的迭代,返回false会停止整个循环。在这种情况下,您必须在此循环之外保存返回值。一个例子可能是:
function checkIfEmpty() {
var returnValue = true;
$('#form1 input').each(function () {
if (!$.trim(this.value).length) {
console.log(false);
returnValue = false;
return false; // this stops the itteration
} else {
console.log(true);
return true; // this has absolutely no effect in your case
}
});
return returnValue;
}