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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
Feb 18 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
Sep 30 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
Dec 16 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 数组入门教程小结
2009/05/20 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
php经典趣味算法实例代码
2020/01/21 PHP
DOM相关内容速查手册
2007/02/07 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
python+requests接口自动化框架的实现
2020/08/31 Python
详解Python中第三方库Faker
2020/09/25 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
会议邀请书范文
2014/02/02 职场文书
学校招生宣传广告词
2014/03/19 职场文书
增员口号大全
2014/06/18 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
理想国读书笔记
2015/06/25 职场文书
七夕情人节问候语
2015/11/11 职场文书
你需要掌握的20个Python常用技巧
2022/02/28 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python