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 相关文章推荐
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
JavaScript中的运算符种类及其规则介绍
Sep 26 Javascript
JS和函数式语言的三特性
Mar 05 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
微信小程序 flex实现导航实例详解
Apr 26 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
详解vue项目打包步骤
Mar 29 Javascript
Moment.js实现多个同时倒计时
Aug 26 Javascript
原生JS实现贪吃蛇小游戏
Mar 09 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+ACCESS 文章管理程序代码
2010/06/21 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
jquery自定义表格样式
2015/11/23 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
详解一个小实例理解js原型和继承
2019/04/24 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
解析Python中的__getitem__专有方法
2016/06/27 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
python 6种方法实现单例模式
2020/12/15 Python
街道务虚会发言材料
2014/10/20 职场文书
2014年底工作总结
2014/12/15 职场文书
战马观后感
2015/06/08 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
如何用python反转图片,视频
2021/04/24 Python