使用JQuery的validate插件做客户端验证非常方便,下面做一个使用validate插件验证用户注册信息的例子。
本实例使用的是1.5版本。
示例是在SSH下做的,代码如下:
registe.jsp
<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%> <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> <title>注册页面</title> <mce:script type=\"text/javascript\" src=\"js/jquery.1.4.2.js\" mce_src=\"js/jquery.1.4.2.js\"></mce:script> <mce:script type=\"text/javascript\" src=\"js/validate/jquery.validate.js\" mce_src=\"js/validate/jquery.validate.js\"></mce:script> <link href=\"js/validate/jquery.validate.css\" mce_href=\"js/validate/jquery.validate.css\" type=\"text/css\" rel=\"stylesheet\"/> <mce:script type=\"text/javascript\"><!-- //扩展validator的校验方法 $.validator.addMethod(\"onlyLetterAndDigit\",function(value, element, params){ var regex=new RegExp(\'^[0-9a-zA-Z]+$\'); return regex.test(value); },\"只能输入字母或数字\"); $(function(){ $(\"#registe\").validate({ //定义验证规则,其中属性名为表单的name属性 rules:{ username:{ required:true, onlyLetterAndDigit:true,//使用自定义方法限制只能输入字母或数字 rangelength:[4,20], remote:\"registe!validName.action\"//使用AJAX异步校验 }, password:{ required:true, rangelength:[4,20] }, chkpassword:{ required:true, equalTo:\"#password\" }, email:{ required:true, email:true }, vercode:\"required\" }, messages:{ username:{ required:\"请输入用户名\", rangelength:\"用户名长度必须在4~20位之间\", remote:$.format(\"用户名{0}已存在,请重新输入!\") }, password:{ required:\"请输入密码\", rangelength:\"密码长度必须在4~20位之间\" }, chkpassword:{ required:\"请再次输入密码\", equalTo:\"密码输入不一致,请重新输入\" }, email:{ required:\"请输入电子邮件\", email:\"请输入合法的电子邮件\" }, vercode:{ required:\"请输入验证码\" } } }); }); //刷新验证码 function refresh() { $(\"#authImg\").src=\"authImg?now=\"+new Date(); } // --></mce:script> </head> <body> <form action=\"registe.action\" method=\"post\" id=\"registe\"> <table> <caption><h2>用户注册</h2></caption> <tr> <td>用 户 名:</td><td><input type=\"text\" name=\"username\" id=\"username\"/></td> </tr> <tr> <td>密 码:</td><td><input type=\"text\" name=\"password\" id=\"password\"/> </td> </tr> <tr> <td>确认密码:</td><td><input type=\"text\" name=\"chkpassword\"/></td> </tr> <tr> <td>Email:</td><td><input type=\"text\" name=\"email\"/></td> </tr> <tr> <td>验证码:</td><td valign=\"bottom\"><input type=\"text\" name=\"vercode\" size=\"10\"/> <img alt=\"\" src=\"authImg\" mce_src=\"authImg\" id=\"authImg\" align=\"absmiddle\"><a href=\"#\" mce_href=\"#\" onclick=\"refresh()\"><span style=\"font-size:12px\" mce_style=\"font-size:12px\">刷新验证码</span></a></td> </tr> <tr> <td colspan=\"2\"><input type=\"submit\" value=\"提交\"/><input type=\"reset\" value=\"重填\"/></td> </tr> </table> </form> </body> </html>
后台RegisteAction.java的主要方法
public String execute() throws Exception { Map session = ActionContext.getContext().getSession(); String ver2 = (String) session.get(\"rand\"); session.put(\"rand\", null); //判断验证码是否正确 if (vercode.equals(ver2)) { if (userManager.validName(username)) { if (userManager.addUser(username, password, email) > 0) return SUCCESS; else addActionError(\"注册失败,请重试!\"); } else { addActionError(\"该用户名已存在,请重新输入!\"); } } else { addActionError(\"验证码不匹配,请重新输入\"); } return INPUT; } //验证用户名是否可用 public String validName() throws Exception { System.out.println(username); boolean flag = userManager.validName(username); HttpServletResponse response = ServletActionContext.getResponse(); response.setDateHeader(\"Expires\", 0); response.addHeader(\"Pragma\", \"no-cache\"); response.setHeader(\"Cache-Control\", \"no-cache\"); response.setContentType(\"text/plain;charset=UTF-8\"); if (flag) response.getWriter().write(\"true\"); else response.getWriter().write(\"false\"); response.getWriter().flush(); // 因为直接输出内容而不经过jsp,因此返回null. return null; }
效果图如下:
注意:使用remote异步验证用户名的方法应该通过response.getWriter().write(\"true\")来输出,而不能像普通方法一样返回字符串。
关于插件更详细的介绍可以查看“jQuery validate验证插件使用详解”。
另外,jQuery也支持动态给控件添加校验,例如:
$(\".quantity\").each(function(){ $(this).rules(\"add\",{digits:true,required:true}); });
以上就是本文的全部内容,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/8118
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我