Javascript跳过功能?

时间:2013-12-11 21:42:35

标签: javascript

我正在为网站注册表单进行一些表单验证,我有一个调用其他函数的函数。它调用的每个函数都会进行一些验证,但是当它进入最终函数时它会跳过它!

function validateForm() {
    if (usernameVal() === false) { return false; }
    if (emailRegexVal() === false) { return false; }
    if (emailMatchVal() === false) { return false; }
    if (pwMatchVal() === false) { return false; }
    else { return true; }
}

function usernameVal() {
    var x = document.forms['Form']['Username'].value;
    if (x === '') {
    alert('username must be filled out');
    return false;
    }
}

function emailMatchVal() {
    var x = document.forms['Form']['Email_1'].value;
    var y = document.forms['Form']['Email_2'].value;
    if (x !== y) {
        alert('Email Addresses do not match');
        return false;
    }
}

function emailRegexVal() {
    var x = document.forms['Form']['Email_1'].value;
    var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    var valid = regex.test(x); 
    if (!valid) {
        alert('Invalid email address!');
        return false;
    }
}

function pwMatchVal() { 
    var x = document.forms['Form']['pw1'].value;
    var y = document.forms['Form']['pw2'].value;
    if (x !== y) {
        alert('Your passwords do not match!');
        return false;
    }
}

因此,当我单击提交按钮时,它会执行用户名检查,电子邮件的正则表达式,电子邮件检查,然后通过事物的外观尝试提交表单pwMatchVal()函数。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

你拥有它的方式,如果这些函数中的任何一个返回false,整个(validateForm)将退出。因此,如果倒数第二个函数返回false,则确实不会调用最后一个函数。

您需要先调用每个函数,保存结果,然后在调用每个验证函数后,然后发出return语句。

看起来应该是这样的

function validateForm() {
    var v1 = (usernameVal() === false);
    var v2 = (emailRegexVal() === false);
    var v3 = (emailMatchVal() === false);
    var v4 = (pwMatchVal() === false);
    return v1 && v2 && v3 && v4;
}