2014-08-28 91 views
0

我想验证我的注册表单,但它不工作,我谷歌它,但没有找到一个解决方案。 这里是我的javascript代码:表单验证使用javascript不工作

 <script> 
     function validateForm() { 
     var x = document.forms["form"]["firstname"].value; 
     if (x==null || x=="") { 
     alert("First name must be filled out"); 
     return false; 
     } 
     } 
     </script> 

,我的形式是:

<form name="form" id="form" action="register.php" method="post" 
    enctype="multipart/form-data" onsubmit="return validateForm()"> 

     <span class="required">*</span> First Name:</td> 
     <input type="text" name="firstname" id="firstname" value="" /> 
     <input type="submit" value="Continue" class="button" /> 

    </form> 
+0

我只是想说明我看到的一个安全缺陷,你也应该在服务器端验证它。我可以轻松绕过JavaScript,使得这层安全无用。例如,某人可以使用Chrome中的REST风格的Web客户端扩展发布数据,并完全绕过名字字段或使其成为超级loooong ... – 2014-08-28 18:06:28

+0

http://stackoverflow.com/questions/1513286/document-getelementbyid-selage-vs -document-myforms-selage – Donal 2014-08-28 18:18:37

回答

0

的设置了,这是不正确的:如果你想看到它的工作我在这里做一个小提琴。所以,我已经编辑它以显示更好的方式。不是完美的方式,但更接近你已经写的东西。

改变它周围像这样:

<form name="form" id="form" action="register.php" method="post" 
    enctype="multipart/form-data"> 

     <span class="required">*</span> First Name:</td> 
     <input type="text" name="firstname" id="firstname" value="" /> 
     <input type="button" value="Continue" class="button" onclick="validateForm()" /> 

    </form> 

然后执行提交如果通过:

<script> 
diItPass=1; 
     function validateForm() { 
     var x = document.forms["form"]["firstname"].value; 
     if (x==null || x=="") { 
     alert("First name must be filled out"); 
     didItPass=0; 
if (didItPass==1) { document.getElementById("form").submit() } 


     } 
     } 
     </script> 

的想法是,设置一个变量显示,如果表单提交传递。如果有,请提交。如果它没有显示警报,并且什么也不做。

0

您应该使用的document.getElementById来获取姓名输入的值。 http://jsfiddle.net/365qebye/1/

function validateForm() {   
     var x = document.getElementById("firstname").value;   
     if (x === null || x === "") { 
      alert("First name must be filled out"); 
      return false; 
     } 
    }