简体   繁体   English

无法让 JavaScript 表单验证工作

[英]Can't get JavaScript form validation to work

I have my HTML Form setup with an external JS File linked to it:我有我的 HTML 表单设置,其中链接了一个外部 JS 文件:

<script type="text/javascript" src ="../a1/js/formvalid.js"></script>

The HTML & JS are as follows: HTML & JS 如下:

 function validateForm() { // user inputs var firstname = document.getElementById("firstname").value; var surname = document.getElementById("lastname").value; var email = document.getElementById("email").value; if (firstname == "") { document.getElementById("firstnameError"). style.display = "inline"; return false; } else if (surname == "") { document.getElementById("lastnameError"). style.display = "inline"; return false; } }
 <div id="grid-container"> <h3>Enter your Details Below</h3> <form id="registration_form" action="" onsubmit="return validateForm()"> <:-- Name/Email Input --> <div><label for="firstname">First Name: </label><input type="text" name = "firstname" id="firstname"></div> <div class="error" id="firstnameError">Required: Please enter your first name</div><br> <div><label for="lastname">Last Name: </label><input type="text" name = "lastname" id="lastname"></div> <div class="error" id="lastnameError">Required: Please enter your Last name</div><br> <div><label for="email">Email: </label><input type="text" name = "email" id="email"></div> <div class="error" id="emailError">Required: Please enter your email</div> <input type="submit" value="Register"/> </form>

But whenever I submit, the JS doesn't work and instead it just submits the form.但是每当我提交时,JS 都不起作用,它只是提交表单。 I've been able to make it work for other forms but it just doesn't want to work for this one.我已经能够让它为其他 forms 工作,但它只是不想为这个工作。 Anyone know what errors I'm facing?有人知道我面临什么错误吗? I used a JS Syntax validator and it said there were no errors.我使用了一个 JS 语法验证器,它说没有错误。

You will need to prevent the form submission when the form is invalid.当表单无效时,您需要阻止表单提交。 There are many posts on StackOverflow about this. StackOverflow 上有很多关于这个的帖子。 Here is one: JavaScript code to stop form submission这是一个: JavaScript 代码停止表单提交

The concept is that you return false from your validateForm() function to prevent submission.这个概念是您从您的validateForm() function 返回false以防止提交。 Additionally, you should prevent the default event from firing.此外,您应该防止触发默认事件。

function validateForm(event) {
  event.preventDefault();
  ...
}

you have to make some changes in your HTML and javascript code.您必须对 HTML 和 javascript 代码进行一些更改。
Currently, I make some different code I think you like this thing.目前,我编写了一些不同的代码,我认为你喜欢这个东西。
In HTML code you have to change button click event.在 HTML 代码中,您必须更改按钮单击事件。

<div id="grid-container">
  <h3>Enter your Details Below</h3>
  <form id="registration_form" action="">
    <div><label for="firstname">First Name: </label><input type="text" name = "firstname" id="firstname"></div>
    <div class="error" id="firstnameError">Required: Please enter your first name</div><br>
                    
    <div><label for="lastname">Last Name: </label><input type="text" name = "lastname" id="lastname"></div>
    <div class="error" id="lastnameError">Required: Please enter your Last name</div><br>
                    
    <div><label for="email">Email: </label><input type="text" name = "email" id="email"></div>
    <div class="error" id="emailError">Required: Please enter your email</div>
                    
    <input type="button" value="Register" onClick="validateForm()"/>
   </form>
</div>

Hear is your javascript code some little bit change:听到你的 javascript 代码有一点点变化:

    document.getElementById("firstnameError"). style.display = "none";
    document.getElementById("lastnameError"). style.display = "none";
    document.getElementById("emailError"). style.display = "none";
    function validateForm() 
    {
      document.getElementById("firstnameError"). style.display = "none";
      document.getElementById("lastnameError"). style.display = "none";
      document.getElementById("emailError"). style.display = "none";
      var firstname = document.getElementById("firstname").value;
      var surname = document.getElementById("lastname").value;
      var email = document.getElementById("email").value;
      var flagValidate = true;
      if (firstname == "") 
      { 
        document.getElementById("firstnameError"). style.display = "block";
        document.getElementById("firstnameError"). style.color = "red";
        flagValidate = false;
      }
    
      if (surname == "") 
      {   
        document.getElementById("lastnameError"). style.display = "block";
        document.getElementById("lastnameError"). style.color = "red";
        flagValidate = false;
      }
    
      if(email == "")
      {
        document.getElementById("emailError"). style.display = "block";
        document.getElementById("emailError"). style.color = "red";
        flagValidate = false;
      }
    
      if(flagValidate)
      {
        document.getElementById("registration_form").submit();
      }
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM