JQuery validate插件验证用户注册信息

前端技术 2023/09/03 JavaScript

使用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也支持动态给控件添加校验,例如:

复制代码 代码如下:
(\"#email\").rules(\"add\", { required: true, email: true }); 

但要注意:如果对集合中的元素动态添加校验需要循环对每个元素添加,这是因为jQuery隐式实现了集合操作,但validate插件没有。例如:

$(\".quantity\").each(function(){ 
 $(this).rules(\"add\",{digits:true,required:true}); 
}); 

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文地址:https://www.stayed.cn/item/8118

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。