Javascript跳过函数

Javascript skipping function?

本文关键字:函数 Javascript      更新时间:2024-06-24

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

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

因此,当我单击提交按钮时,它会进行用户名检查、电子邮件上的regex、电子邮件检查,然后根据情况尝试提交表单pwMatchVal()函数。有什么想法吗?谢谢

按照您的方式,如果这些函数中的任何一个返回false,整个(validateForm)将退出。因此,如果倒数第二个函数返回false,那么最后一个函数将不会被调用。

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

它应该看起来像这个

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