0

我有一些验证函数,还有另一个名为“validation()”的函数来调用我所有的验证函数。在表单提交之前,这个函数调用并且被调用的函数依次运行,当其中一个返回 false 时,下一个函数不调用。我的要求是如何独立调用它们?
这是我的一段代码:

function IsEmail() {
    rows = document.getElementById('txtRows').value.split('#');
    types = document.getElementById('txtTypes').value.split('#');

    var CorrectFormat = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    msg_req = "";
    var flg = true;

    for (i = 0; i < rows.length; i++) {
        if (types[i] == "email") {
            var ctrl_val = document.getElementById('ctrl-' + i).value;
            if (!CorrectFormat.test(ctrl_val)) {
                msg_req += "invalid format ! \n";
                flg = false;
            }
        }
    }
    if (flg)
        return true;
    else
        return false;
}
        function validations() {
        if (!(required_field()) || !(Is Email())) {
            var  str = "there are some errors :\n";
            if (msg_req != "") {
                str += msg_req;
                alert(str);
            }
            msg_req = "";
            return false;
        }
        else {
            msg_req = "";
            return true;
        }
    }
4

2 回答 2

1

问题是,由于您使用的是||运算符,一旦一个条件返回 false 并被否定,逻辑运算就会变为 true,因为 javascript 引擎将不会执行进一步的函数。

function validations() {
    var valid   = required_field();
    valid = isEmail() && valid;
    if (!valid) {
        var  str = "there are some errors :\n";
        if (msg_req != "") {
            str += msg_req;
            alert(str);
        }
        msg_req = "";
        return false;
    }
    else {
        msg_req = "";
        return true;
    }
}
于 2013-06-27T09:15:44.487 回答
0
var requiredBool = required_field();
var isEmailBool = isEmail();

if(!requiredBool  || !isEmailBool ) 
{
 ...
{
于 2013-06-27T09:16:00.207 回答