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

时间:2016-09-04 19:59:08

标签: javascript validation modal-dialog

我正在尝试进行一些表格验证,其中包括检查下拉菜单是否留空,检查所有输入区域是否都留空并验证电子邮件字段。我有根据输入返回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;
        }
    });
}

1 个答案:

答案 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;
}