2011-08-22 83 views
2

有人可以看到我的错误表单验证?我正在使用我在网上找到的一个例子,它不适合我。使用JQuery验证HTML表单

我想验证与jQuery的输入字段,然后将其传递到服务器端脚本。它应该在用户缺少输入的字段旁边打印错误消息。

下面的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Register</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5"> 
<link rel="stylesheet" type="text/css" href="style1.css" /> 
<link rel="stylesheet" type="text/css" href="forms.css" /> 

<script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#registerform").validate({ 
     rules: { 
      username: "required", 
      firstname: "required", 
      email: {// compound rule 
      required: true, 
      passwd: true, 
      email: true, 
     }, 
     username:{ 
      username: true 
     }, 
     url: { 
      url: true 
     }, 
     comment: { 
      required: true 
     } 
     }, 
     messages: { 
      comment: "Please enter a comment." 
     } 
     }); 
    }); 
    </script> 

<style type="text/css"> 

label { width: 10em; float: left; } 
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; } 
p { clear: both; } 
.submit { margin-left: 12em; } 
em { font-weight: bold; padding-right: 1em; vertical-align: top; } 
</style> 
</head> 

<body> 

Please register below 
<p /> 
       <form action=" " id="registerform" method="POST"> 


     <table cellspacing="9"> 
     <tr><td><b>Username:</b></td><td><input type="text" name="username" size="30"></td></tr> 
     <tr><td><b>First name:</b></td><td><input type="text" name="firstname" size="30"/></td></tr> 
     <tr><td><b>Surname:</b> </td><td><input type="text" name="lastname" size="30"/></td></tr> 
     <tr><td><b>Email : </b> </td><td><input type="text" name="email" size="30"/></td></td></tr> 
     <tr><td><b>Password :</b> </td><td><input type="password" name="passwd" size="30"/></td></tr> 

     <tr><td><b>Telephpone:</b></td><td><input type="text" name="telephone" size="30"/></td></td></tr> 
     <tr><td><b>House No:</b></td><td><input type="text" name="ad1" size="30"/></td></td></tr> 
     <tr><td><b>Street Name:</b></td><td><input type="text" name="street" size="30"/></td></tr> 
     <tr><td><b>Town/ City:</b></td><td><input type="text" name="town" size="30"/></td></tr> 
     <tr><td><b>Post code:</b></td><td><input type="text" name="pcode" size="30"/></td></tr> 

    </table> 

    <p /> 
       <input class="submit" type="submit" value="Sign Up!" /> 
       <input type="reset" value ="Clear Form" onClick="return confirm('Are you sure you want to reset the form?')"> 
       </form> 


</body> 

下面的代码原有的代码,我从网站得到的地方,它的作品。但我似乎无法在我的代码中使用该示例。

<html> 
    <head> 
    <title>Simple Form Validation</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form2").validate({ 
     rules: { 
      name: "required",// simple rule, converted to {required:true} 
      email: {// compound rule 
      required: true, 
      email: true 
     }, 
     url: { 
      url: true 
     }, 
     comment: { 
      required: true 
     } 
     }, 
     messages: { 
      comment: "Please enter a comment." 
     } 
     }); 
    }); 
    </script> 

    </head> 


    <body> 
    <form id="form2" method="post" action=""><br /> 
     Name * <input type="text" name="name" /> <br /> 
     E-Mail *<input type="text" name="email" /> <br /> 

     URL <input type="text" name="url" /> <br /> 
     Your comment * <textarea name="comment" ></textarea> <br /> 
     <input class="submit" type="submit" value="Submit"> 
    </form> 
    </body> 
</html> 

更新:感谢@Usman它现在的工作。还有一个问题,是否可以更改默认错误消息而不是'此字段是必填'

谢谢

+0

这将是一个很多其他人更容易帮助你,如果你解释它是如何不是为你工作。 –

+0

对不起,这不是验证。它只是提交空表格。 – Julie

+0

你有错误或......? –

回答

2

从验证规则,网址等中删除不存在的字段我已经删除了这些和它的工作。工作http://jsfiddle.net/xyRRU/,检查下面的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Register</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5"> 
<link rel="stylesheet" type="text/css" href="style1.css" /> 
<link rel="stylesheet" type="text/css" href="forms.css" /> 

<script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#registerform").validate({ 
     messages: { 

      firstname: "Please enter your firstname", 
      username: { 
       required: "Please enter a username", 
       minlength: "Your username must consist of at least 2 characters" 
      }, 

      email: "Please enter a valid email address" 

     }, 
     rules: { 
      username: "required", 
      firstname: "required", 
      email: {// compound rule 
      required: true, 
      passwd: true, 
      email: true, 
     }, 
     }, 

     }); 
    }); 
    </script> 

<style type="text/css"> 

label { width: 10em; float: left; } 
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; } 
p { clear: both; } 
.submit { margin-left: 12em; } 
em { font-weight: bold; padding-right: 1em; vertical-align: top; } 
</style> 
</head> 

<body> 

Please register below 
<p /> 
       <form action=" " id="registerform" method="POST"> 


     <table cellspacing="9"> 
     <tr><td><b>Username:</b></td><td><input type="text" name="username" size="30"></td></tr> 
     <tr><td><b>First name:</b></td><td><input type="text" name="firstname" size="30"/></td></tr> 
     <tr><td><b>Surname:</b> </td><td><input type="text" name="lastname" size="30"/></td></tr> 
     <tr><td><b>Email : </b> </td><td><input type="text" name="email" size="30"/></td></td></tr> 
     <tr><td><b>Password :</b> </td><td><input type="password" name="passwd" size="30"/></td></tr> 

     <tr><td><b>Telephpone:</b></td><td><input type="text" name="telephone" size="30"/></td></td></tr> 
     <tr><td><b>House No:</b></td><td><input type="text" name="ad1" size="30"/></td></td></tr> 
     <tr><td><b>Street Name:</b></td><td><input type="text" name="street" size="30"/></td></tr> 
     <tr><td><b>Town/ City:</b></td><td><input type="text" name="town" size="30"/></td></tr> 
     <tr><td><b>Post code:</b></td><td><input type="text" name="pcode" size="30"/></td></tr> 

    </table> 

    <p /> 
       <input class="submit" type="submit" value="Sign Up!" /> 
       <input type="reset" value ="Clear Form" onClick="return confirm('Are you sure you want to reset the form?')"> 
       </form> 


</body> 
+0

非常感谢,它像魔术一样运作。你是一个明星:-) – Julie

+0

有什么办法可以指定自己的错误信息,而不是默认的“\t此字段是必需的”? – Julie

+0

我已编辑显示如何添加自己的消息的答案,谢谢。 – Usman

1

检查你的语法 - 你必须留在了这里一个逗号:

rules: { 

     username: "required", 

     firstname: "required", 

     email: {// compound rule 

     required: true, 

     passwd: true, 

     email: true**,** 

    }, 

删除,看你怎么得到。

0

您与jquery.validate.js的链接正在返回403 Forbidden error,这意味着您并未实际导入该插件。

尝试此链接来代替:http://view.jquery.com/trunk/plugins/validate/jquery.validate.js

<script type="text/javascript" src="http://view.jquery.com/trunk/plugins/validate/jquery.validate.js"></script> 

更妙的是,指向该文件的本地副本。

此外,请检查你没有得到任何JS错误使用firebug


编辑:这种变化本身不会解决你的问题,但你真的不应该被盗链从dev.jquery.com脚本。见related answerHotlinking to be disabled on January 31, 2011

+0

嗯,这似乎没有帮助:(谢谢虽然。 – Julie

+0

这本身不会解决你的问题,因为你有你的JS错误。然而,你真的应该改变你的链接,因为[dev.jquery.com不允许盗链](http://stackoverflow.com/questions/5947093/jquery-autocomplete-is-not-a-function/5947177#5947177)。你最好自己托管。 –