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


Posted in Javascript onMay 11, 2016

使用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; 
}

效果图如下:

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

注意:使用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}); 
});

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

Javascript 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
javascript实现数组中的内容随机输出
Aug 11 Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 Javascript
JS上传图片预览插件制作(兼容到IE6)
Aug 07 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
小程序点击图片实现自动播放视频
May 29 Javascript
js前端如何写一个精确的倒计时代码
Oct 25 Javascript
jQuery validate验证插件使用详解
May 11 #Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 #Javascript
基于jQuery插件实现点击小图显示大图效果
May 11 #Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 #Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
May 11 #Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 #Javascript
使用JavaScript实现ajax的实例代码
May 11 #Javascript
You might like
php时区转换转换函数
2014/01/07 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python制作一个桌面便签软件
2015/08/09 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
后勤岗位职责
2013/11/26 职场文书
2014年销售部工作总结
2014/12/01 职场文书
幼儿园感谢信
2015/01/21 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
多人股份制合作协议书
2016/03/19 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Golang中异常处理机制详解
2021/06/08 Golang
详解Python函数print用法
2021/06/18 Python
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS