JS表单验证的逻辑

时间:2013-04-29 21:13:23

标签: javascript html forms validation logic

假设我有两个表单,firstName和lastName。

我有一个alphanumericvalidation方法,我单独测试。

   function alphaNumericValidation(Name)
   {
     if(/[^a-zA-Z0-9]/.test(firstName.value) || firstName.value == "") 
     {
       Name.style.border = "1px solid red";
       Name.focus();
       return false;
    }
    return true;
   }

现在,我有一个代码提交的验证方法:

 <td><input type="submit" name="smbt" id="smbt" value="Next" class="nextBtn" onclick="return validation();"/></td>

验证方法写为

  function validation()
  {
    var firstName = document.getElementById("firstName");
    var lastName = document.getElementById("lastName");

    if (alphaNumericValidation(firstName))
    {
        if (alphaNumericValidation(lastName))
        {
            return true;
        }
   }
   else
            return false;

然而逻辑是错误的并且不能按预期工作。我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

function alphaNumericValidation(Name) {
  if(/[^a-zA-Z0-9]/.test(Name.value) || Name.value == "") {
    Name.style.border = "1px solid red";
    Name.focus();
    return false;
  }
  return true;
}

您正在firstNamealphaNumericValidation进行测试,它应该是Name,因为您将firstName(或lastName)作为{{{}传递1}}参数Name

修改

如果只有alphaNumericValidation有效且validation()无效,则firstName函数不会返回任何内容。

lastName

请改为尝试:

function validation() {
  var firstName = document.getElementById("firstName");
  var lastName = document.getElementById("lastName");

  if (alphaNumericValidation(firstName)) {
    if (alphaNumericValidation(lastName)) {
      return true;
    }
  // <-- When it gets to here, nothing is returned.. you could add `return false;` here to fix it.
  }
  else
    return false;

修改2

你可以继续将if语句放在if语句中,只要你确保函数总是返回一些东西就可以正常工作。

在你的情况下,我可能会写这样的东西:

if (alphaNumericValidation(firstName) && alphaNumericValidation(lastName)) {
  return true;
}
else
  return false;

这将继续运行您的验证,直到其中一个返回function validation() { var firstName = document.getElementById("firstName"); var lastName = document.getElementById("lastName"); var valid = true; valid = valid ? alphaNumericValidation(firstName) : false; valid = valid ? alphaNumericValidation(lastName) : false; return valid; } ,之后它会跳过那些,false将返回validation()