我正在使用以下代码来验证表单:

        if (isEmpty(email)) {
            alert("1");
            return false;
        }
        else if (!isEmail(email)) {
            alert("2");
            return false;
        }

        if (isEmpty(name)) {
            alert("3");
            return false;
        }

        if (isEmpty(age)) {
            alert("4");
            return false;
        }
        else if (!isAge(age)) {
            alert("5");
            return false;
        }

        if (isEmpty(city)) {
            alert("6");
            return false;

        }

        if (isEmpty(comments)) {
            alert("7");
            return false;
        }


点击“提交”按钮时,如果前两个条件确实起作用(检查电子邮件变量是否为空或不是电子邮件地址格式的条件)-这意味着如果我将电子邮件输入保留为空或不是电子邮件地址格式我收到警报(1或2)。

问题在于,其余的验证都将被跳过,而我是否将另一个输入留空或是否采用格式都没关系。

另外,如果我采用第一个IF块:

 if (isEmpty(email)) {
            alert("1");
            return false;
        }
        else if (!isEmail(email)) {
            alert("2");
            return false;
        }


并将其移至验证块的末尾,一切正常。

我猜我某个地方的语法有误,但是我花了2个小时才找到,却找不到。

附言

这是我正在使用的两个验证功能:

function isEmpty(field) {
        if ((field == null || field == "")) {
            return true;
        }
        return false;
    }


function isEmail(field) {
        var atpos = field.indexOf("@");
        var dotpos = field.lastIndexOf(".");
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
            return false;
        }
    }

最佳答案

您在isEmail函数中使用x.length,但未定义x

关于javascript - Javascript IF块被跳过,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17770355/

10-09 09:54