Question 1:
<script src="../js/jquery.js"></script> <script src="../js/jquery.validate.js"></script> <script> $().ready(function() { $("#registerForm").validate(); }); </script> <form id="registerForm" method="get" action=""> <fieldset> <p> <label for="cusername">用户名</label> <input id="cusername" name="username" type="text" data-rule-required="true" data-rule-rangelength="[2,10]" data-msg-required="用户名不能为空" data-msg-rangelength="用户名长度必须是2到10个字符"> </p> <p> <label for="cpassword">密码</label> <input id="cpassword" name="password" type="password" data-rule-required="true" data-rule-minlength="6" data-msg-required="密码不能为空" data-msg-minlength="至少设置6位密码"> </p> <p> <label for="cconfirmpassword">确认密码</label> <input id="cconfirmpassword" name="confirmpassword" type="password" data-rule-equalTo="#cpassword" data-msg-equalTo="两次密码不一致"> </p> <p> <label for="cemail">邮箱</label> <input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-required="邮箱不能为空" data-msg-email="邮箱的格式不正确"> </input> </p> <p> <label for="chasreferee">有推荐人请勾选</label> <input type="checkbox" id="chasreferee" name="hasreferee"> </p> <p> <label for="creferee">推荐人</label> <input id="creferee" name="referee" data-rule-required="#chasreferee:checked" data-msg-required="推荐人不能为空"> </input> </p> <p> <input type="submit" value="提交"> </p> </fieldset> </form>
After reading the previous articles written by others, it seems that they rely on the jquery.metadata.js library, and then write them in the form of class="required email". It seems a bit messy to write like this. The class itself is The presentation style is now attached with various verification rules, which seems a bit messy, but fortunately in the new version, there is a new way of writing, which does not rely on the above js library, with data-rule-verification rules, The format of data-msg-prompt information is redefined, which is simpler, more intuitive and more powerful. The above test passed
My version of jquery.validate1.13.js
With this way of writing, the messages in the control will not take effect, and an error will be reported: Cannot read property 'call' of undefined. Many jquery.validate articles in the garden mentioned that it can be used. I think the version is out of date. Anyway, I don’t have it. Test it out. Also, I was drunk when uninstalling the verification class. Test error below!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript" src="jquery.min.js"></script> <!--<script type="text/javascript" src="jquery.validate.js"></script>--> <script type="text/javascript" src="jquery.validate1.13.js"></script> <script type="text/javascript" src="jquery.validate.message_cn.js"></script> <script type="text/javascript" src="jquery.metadata.js"></script> <script type="text/javascript"> $(function(){ $.metadata.setType("attr", "validate"); $("#signupForm").validate(); //$("#signupForm").validate({ meta: "validate" }); //$("#commentForm").validate(); }) </script> </head> <body> <form id="signupForm" method="get" action=""> <p> <input id="email" name="email" validate="{required:true, email:true, messages:{required:'输入email地址', email:'你输入的不是有效的邮件地址'}}" /> </p> <p> <input class="submit" type="submit" value="Submit"/> </p> </form> </body> </html>
Problem 2: No matter how you configure jQuery_validate, you cannot see the prompt message.
Cause: submit() was executed twice.
Example:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>jquery test</title> <script src="js/jquery.js"></script> <script src="js/jquery.validate.js"></script> <script src="js/jquery.metadata.js"></script> <script src="js/messages_zh.js"></script> <script> $(document).ready(function() { $("#commentForm").validate({ //debug:true }); }); </script> <script type="text/javascript"> function register(){ document.forms[0].action = 'register/addUser.action'; //document.forms[0].submit(); } </script> </head> <body > <form id="commentForm" method="post"> <table style ="width:100%"> <tr> <td>user name:</td> <td><input type="text" name="username" id="username" maxlength="10" class="{required:true,minlength:6,maxlength:12}" /></td> </tr> <tr> <td>password:</td> <td><input type="password" name="password" id="password" maxlength="15" class="required"/></td> </tr> <tr> <td></td> <td><input type="submit" value="Register" onclick="register();"></td> </tr> </table> </form> </body> </html>
There was a submission after jQuery verification. I submitted it again in register(). After commenting out [document.forms[0].submit();], the problem was solved.