检查所有函数是否为真,然后执行模态窗口

check if all functions are true and then execute modal window

本文关键字:然后 执行 模态 窗口 函数 是否 检查      更新时间:2023-09-26

我正在尝试做一些表单验证,其中包括检查下拉菜单是否为空,检查所有输入区域是否为空,并验证电子邮件字段。我有一些函数会根据输入返回真/假。我现在要做的是在一个函数中检查所有的验证函数,如果是真的,我想打开一个模态窗口。我所有的验证函数都返回真(如预期的那样,这工作得很好),但我的嵌套函数返回假?

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;
        }
    });
}

您的checkIfEmpty函数没有返回

里面有一个$('#form1 input').each(function(){});循环,这个循环的返回值没有传递给外部函数。基本上,jQuery .each函数中的return true只停止当前迭代,返回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;
}