Javascript表单验证返回

时间:2013-05-07 09:43:31

标签: javascript html function validation

我对javascript有点新,我开始明白这种编码机制是如何工作的。我创建了一个包含许多字段的简单html表单。我正在使用javascript从字段中获取数据并通过许多验证函数对其进行验证。以下代码是我目前正在使用的javascript:

function Validation()  
{  
    submit_name = document.getElementById('txt_Name').value;
    submit_surname = document.getElementById('txt_Surname').value;
    submit_mobilenumber = document.getElementById('MobileNumber').value;


    if(checkName(submit_name))
        {
    if(checkSurname(submit_surname))
            {
    if(checkMobile(submit_mobilenumber))
                {
                } 
            }
        }
    return false;
}

我的问题是:在这个代码的情况下,主函数(Validation())将逐个遍历所有单个函数?

例如,如果checkName()函数返回false,那么另外两个验证函数checkSurname()和checkMobile()会运行还是程序会在第一个停止?

我的问题的原因是,在通过所有验证函数返回后,我想添加另一个函数来将所有内容保存到文件中。但是,只有在验证了所有表单后才能执行此操作。任何帮助非常感谢提前感谢。

4 个答案:

答案 0 :(得分:3)

我宁愿选择一个返回包含错误的每个字段的验证器,这样就可以向用户显示错误填写的字段

function Validation() {
    var submit_name = document.getElementById('txt_Name').value,
        submit_surname = document.getElementById('txt_Surname').value,
        submit_mobilenumber = document.getElementById('MobileNumber').value,
        errors = [];

    if(!checkName(submit_name)) {
        errors.push({
            id: 'txt_Name',
            message: 'Name is required'
        });
    }

    if(!checkSurname(submit_surname)) {
        errors.push({
            id: 'txt_Surname',
            message: 'Surname is required'
        });
    }

    if(!checkMobile(submit_mobilenumber)) {
        errors.push({
            id: 'MobileNumber',
            message: 'Mobile number is required'
        });
    }

    return errors;
}

var errors = Validation();

if(errors.length === 0) {
    // No errors, do your stuff
} else {
    // Loop errors and do something
    for(var i = 0; i < errors.length; i++) {
        // can mark the element with document.getElementById(errors[i].id)
        alert(errors[i].message);
    }
}

答案 1 :(得分:2)

程序将在第一个方法停止返回false,因为它们都包含在彼此中。因此,如果checkname()返回false,则validation()将返回false,而其他函数则相同。

// if false, validate() returns false. if true, checksurname() called
if(checkName(submit_name))
{
    // if false, validate() returns false. if true, checkMobile() called
    if(checkSurname(submit_surname))
    {
        // if false, validate() returns false
        if(checkMobile(submit_mobilenumber))
        {
        }
    }
}
return false;

虽然正如Dreamweiver所说,个人验证会更好:

if(checkname()&&checkmobile()&&checksurname())
{
    return true;
}
else
{
    return false;
}

答案 2 :(得分:2)

验证的简单解决方案(不忽略其他检查功能)应该是:

function Validation()  
{  
    var booleanValidation = false;
    var check_submit_name = checkName(document.getElementById('txt_Name').value);
    var check_submit_surname = checkSurname(document.getElementById('txt_Surname').value);
    var check_submit_mobilenumber = checkMobile(document.getElementById('MobileNumber').value);

    if (check_submit_name === false || check_submit_surname === false || check_submit_mobilenumber === false) {
        booleanValidaation = false;
    } else if (check_submit_name === true && check_submit_surname === true && check_submit_mobilenumber === true) {
        booleanValidaation = true;
    }

    return booleanValidation;
}

答案 3 :(得分:0)

如果checkName(submit_name)将返回false,则

if(checkName(submit_name))将变为if(false)因此条件将为false,因此if条件代码将不会执行。并且将继续执行。

这适用于所有if条件。