Javascript表单验证未检查给定变量

Javascript Form Validation Not Checking Given Variable

本文关键字:变量 检查 表单 验证 Javascript      更新时间:2023-09-26

我试图使用Javascript验证表单,但密码长度检查不起作用,但从我所看到的代码中没有明显的错误。

形式:

<form id="reg_form" onsubmit="return false;">
        <input type="text" maxlength="255" placeholder="Email..." name="email" /><br />
        <input type="password" placeholder="Password..." name="password" /><br />
        <input type="text" maxlength="30" placeholder="Username..." name="username" /><br />
        <input type="text" maxlength="255" placeholder="First Name..." name="fname" /><br />
        <input type="text" maxlength="255" placeholder="Last Name..." name="lname" /><br />
        <!-- Start Div With reCaptcha In -->
        <!-- End Div With reCaptcha In -->
        <input type="submit" value="Sign-up" onclick="register(this.form, this.form.email, this.form.password, this.form.username, this.form.fname, this.form.lname);" />
    </form>

Javascript函数:

<script>
  function register(form, email, password, username, fname, lname) {
    document.getElementById("reg_error").style.display = "block";
    if (email.value.length < 1) {
      document.getElementById("reg_error").innerHTML = "Please Enter An Email Address!";
      return;
    }
    if (password.value.length < 6) {
      document.getElementById("reg_error").innerHtml = "Passwords Must Be Longer Than 6 Characters!";
      return;
    }
    if (username.value.length < 5 || username.value.length > 30) {
      document.getElementById("reg_error").innerHTML = "Username Must Be Between 5 And 30 Characters Long!";
      return;
    }
    if (fname.value.length < 1) {
      document.getElementById("reg_error").innerHTML = "Please enter a first name!";
      return;
    }
    if (lname.value.length < 1) {
      document.getElementById("reg_error").innerHTML = "Please enter a last name!";
      return;
    }
    var info = new FormData();
    info.append("email", email.value);
    info.append("p", hex_sha512(password.value));
    password.value = "";
    info.append("username", username.value);
    info.append("fname", fname.value);
    info.append("lname", lname.value);
    if (window.XMLHttpRequest) {
      register_ = new XMLHttpRequest();
    } else {
      register_ = new ActiveXObject("Microsoft.XMLHTTP");
    }
    register_.onreadystatechange = function () {
      if (register_.readyState == 4 && register_.status == 200) {
        document.getElementById("reg_error").innerHTML = register_.responseText;
      }
    }
    register_.open("POST", "scripts/signup.php", true);
    register_.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    register_.send(info);
  }
</script>

除了查询密码值长度的if语句外,所有if语句都能正常工作。如有任何帮助,我们将不胜感激。当我通过console.log()测试这些值时,这些值被正确地传递了出去;

我使用的是HTML5 Boilerplate。我不想使用jQuery来做这件事。

您在这部分拼错了innerHTML

if (password.value.length < 1) {
    document.getElementById("reg_error").innerHtml = ...

更改为:

document.getElementById("reg_error").innerHTML = ...