首页 > 语言 > JavaScript > 正文

jquery.validate使用时遇到的问题

2024-05-06 16:20:47
字体:
来源:转载
供稿:网友

这篇文章主要介绍了jquery.validate使用时遇到的问题的解决方法的汇总,真是应了那句老话,会者不难难者不会,这里记录一下,有需要的小伙伴可以参考下。

问题一:

 

 
  1. <script src="../js/jquery.js"></script> 
  2. <script src="../js/jquery.validate.js"></script> 
  3. <script> 
  4. $().ready(function() { 
  5. $("#registerForm").validate(); 
  6. }); 
  7. </script> 
  8.  
  9. <form id="registerForm" method="get" action=""
  10. <fieldset> 
  11. <p> 
  12. <label for="cusername">用户名</label> 
  13. <input id="cusername" name="username" type="text" data-rule-required="true" data-rule-rangelength="[2,10]" data-msg-required="用户名不能为空" data-msg-rangelength="用户名长度必须是2到10个字符"
  14. </p> 
  15. <p> 
  16. <label for="cpassword">密码</label> 
  17. <input id="cpassword" name="password" type="password" data-rule-required="true" data-rule-minlength="6" data-msg-required="密码不能为空" data-msg-minlength="至少设置6位密码"
  18. </p> 
  19. <p> 
  20. <label for="cconfirmpassword">确认密码</label> 
  21. <input id="cconfirmpassword" name="confirmpassword" type="password" data-rule-equalTo="#cpassword" data-msg-equalTo="两次密码不一致"
  22. </p> 
  23. <p> 
  24. <label for="cemail">邮箱</label> 
  25. <input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-required="邮箱不能为空" data-msg-email="邮箱的格式不正确"
  26. </input> 
  27. </p> 
  28. <p> 
  29. <label for="chasreferee">有推荐人请勾选</label> 
  30. <input type="checkbox" id="chasreferee" name="hasreferee"
  31. </p> 
  32. <p> 
  33. <label for="creferee">推荐人</label> 
  34. <input id="creferee" name="referee" data-rule-required="#chasreferee:checked" data-msg-required="推荐人不能为空"
  35. </input> 
  36. </p> 
  37. <p> 
  38. <input type="submit" value="提交"
  39. </p> 
  40. </fieldset> 
  41. </form> 

看了之前的别人写的文章,貌似是依赖jquery.metadata.js这个库,然后写的时候以 class=”required email” 这样的形式来写,这样写起来好像有些乱,class本身是呈现样式的,现在被附上各种校验的规则,看上去似乎有些乱,不过好在新版本中,又有了新的写法,不依赖上面的js库,以 data-rule-验证规则、data-msg-提示信息 这样的格式来重新定义,更简单,更直观,更强大了。上面的测试通过

我的版本的jquery.validate1.13.js

然后这样的写法,控件中的messages不会生效,还会报错:Cannot read property 'call' of undefined 园子里面很多jquery.validate文章提到可以使用,我看是版本过时了,反正我没有试验出来。还有就是将验证卸载class里面我也是醉了。下面的测试错误!

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>无标题文档</title> 
  6. <script type="text/javascript" src="jquery.min.js"></script> 
  7.  
  8. <!--<script type="text/javascript" src="jquery.validate.js"></script>--> 
  9. <script type="text/javascript" src="jquery.validate1.13.js"></script> 
  10. <script type="text/javascript" src="jquery.validate.message_cn.js"></script> 
  11. <script type="text/javascript" src="jquery.metadata.js"></script> 
  12. <script type="text/javascript"
  13. $(function(){ 
  14. $.metadata.setType("attr""validate"); 
  15. $("#signupForm").validate(); 
  16. //$("#signupForm").validate({ meta: "validate" }); 
  17. //$("#commentForm").validate(); 
  18. }) 
  19.  
  20. </script> 
  21. </head> 
  22.  
  23. <body> 
  24. <form id="signupForm" method="get" action=""
  25. <p> 
  26.  
  27.  
  28. <input id="email" name="email" validate="{required:true, email:true, messages:{required:'输入email地址', email:'你输入的不是有效的邮件地址'}}" /> 
  29. </p> 
  30.  
  31. <p> 
  32. <input class="submit" type="submit" value="Submit"/> 
  33. </p> 
  34. </form> 
  35.  
  36. </body> 
  37. </html> 

问题二:jQuery_validate配置后无论怎样都看不到提示信息。

原因:submit()了二次。

例子:

 

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <html>  
  4. <head>  
  5. <title>jquery test</title>  
  6. <script src="js/jquery.js"></script>  
  7. <script src="js/jquery.validate.js"></script>  
  8. <script src="js/jquery.metadata.js"></script>  
  9. <script src="js/messages_zh.js"></script>  
  10.  
  11. <script>  
  12. $(document).ready(function() {  
  13.  
  14. $("#commentForm").validate({  
  15. //debug:true  
  16. });  
  17. });  
  18. </script>  
  19. <script type="text/javascript">  
  20. function register(){  
  21. document.forms[0].action = 'register/addUser.action';  
  22. //document.forms[0].submit();  
  23. }  
  24. </script>  
  25. </head>  
  26. <body >  
  27. <form id="commentForm" method="post">  
  28. <table style ="width:100%">  
  29. <tr>  
  30. <td>user name:</td>  
  31. <td><input type="text" name="username" id="username" maxlength="10" 
  32. class="{required:true,minlength:6,maxlength:12}" /></td>  
  33. </tr>  
  34. <tr>  
  35. <td>password:</td>  
  36. <td><input type="password" name="password" id="password" maxlength="15" 
  37. class="required"/></td>  
  38. </tr>  
  39. <tr>  
  40. <td></td>  
  41. <td><input type="submit" value="Register" onclick="register();"></td>  
  42. </tr>  
  43. </table>  
  44. </form>  
  45. </body>  
  46. </html>  

jQuery验证后有个提交,自己在register()中又提交了一次,将【document.forms[0].submit();】注释掉后问题解决。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选