我对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()会运行还是程序会在第一个停止?
我的问题的原因是,在通过所有验证函数返回后,我想添加另一个函数来将所有内容保存到文件中。但是,只有在验证了所有表单后才能执行此操作。任何帮助非常感谢提前感谢。
答案 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条件。