Sealyu

--- 博客已迁移至: http://www.sealyu.com/blog

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  618 随笔 :: 87 文章 :: 225 评论 :: 0 Trackbacks

最近在做一个用户注册登录的页面,资料查寻过程中发现了一个非常不错的客户端验证的极品-jQuery.validate。
它是著名的JavaScript包jQuery的一个插件,其实它还有其它的一些插件应该都爽,有待慢慢来学习

官方地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
jQuery用户手册:http://jquery.org.cn/visual/cn/index.xml

开发使用起来非常简单明了,
我的代码:


   1. $(document).ready(function(){   
   
2.   
   
3/* 设置默认属性 */   
   
4. $.validator.setDefaults({   
   
5.   submitHandler: function(form) { form.submit(); }   
   
6. });   
   
7// 中文字两个字节   
   8. jQuery.validator.addMethod("byteRangeLength"function(value, element, param) {   
   
9.   var length = value.length;   
  
10.   for(var i = 0; i < value.length; i++){   
  
11.    if(value.charCodeAt(i) > 127){   
  
12.     length++;   
  
13.    }   
  
14.   }   
  
15.   return this.optional(element) || ( length >= param[0&& length <= param[1] );   
  
16. }, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");   
  
17.   
  
18/* 追加自定义验证方法 */   
  
19// 身份证号码验证   
  20. jQuery.validator.addMethod("isIdCardNo"function(value, element) {   
  
21.   return this.optional(element) || isIdCardNo(value);   
  
22. }, "请正确输入您的身份证号码");   
  
23.   
  
24// 字符验证   
  25. jQuery.validator.addMethod("userName"function(value, element) {   
  
26.   return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);   
  
27. }, "用户名只能包括中文字、英文字母、数字和下划线");   
  
28.   
  
29// 手机号码验证   
  30. jQuery.validator.addMethod("isMobile"function(value, element) {   
  
31.   var length = value.length;   
  
32.   return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value));   
  
33. }, "请正确填写您的手机号码");   
  
34.   
  
35// 电话号码验证   
  36. jQuery.validator.addMethod("isPhone"function(value, element) {   
  
37.   var tel = /^(\d{3,4}-?)?\d{7,9}$/g;   
  
38.   return this.optional(element) || (tel.test(value));   
  
39. }, "请正确填写您的电话号码");   
  
40.   
  
41// 邮政编码验证   
  42. jQuery.validator.addMethod("isZipCode"function(value, element) {   
  
43.   var tel = /^[0-9]{6}$/;   
  
44.   return this.optional(element) || (tel.test(value));   
  
45. }, "请正确填写您的邮政编码");   
  
46. $(regFrom).validate({   
  
47/* 设置验证规则 */   
  
48.   rules: {   
  
49.    userName: {   
  
50.     required: true,   
  
51.     userName: true,   
  
52.     byteRangeLength: [3,15]   
  
53.    },   
  
54.    password: {   
  
55.     required: true,   
  
56.     minLength: 5   
  
57.    },   
  
58.    repassword: {   
  
59.     required: true,   
  
60.     minLength: 5,   
  
61.     equalTo: "#password"   
  
62.    },   
  
63.    question: {   
  
64.     required: true   
  
65.    },   
  
66.    answer: {   
  
67.     required: true   
  
68.    },   
  
69.    realName: {   
  
70.     required: true   
  
71.    },   
  
72.    cardNumber: {   
  
73.     isIdCardNo: true   
  
74.    },   
  
75.    mobilePhone: {   
  
76.     isMobile: true   
  
77.    },   
  
78.    phone: {   
  
79.     isPhone: true   
  
80.    },   
  
81.    email: {   
  
82.     required: true,   
  
83.     email: true   
  
84.    },   
  
85.    zipCode: {   
  
86.     isZipCode:true   
  
87.    }   
  
88.   },   
  
89/* 设置错误信息 */   
  
90.   messages: {   
  
91.    userName: {   
  
92.     required: "请填写用户名",   
  
93.     byteRangeLength: "用户名必须在3-15个字符之间(一个中文字算2个字符)"   
  
94.    },   
  
95.    password: {   
  
96.     required: "请填写密码",   
  
97.     minlength: jQuery.format("输入{0}.")   
  
98.    },   
  
99.    repassword: {   
 
100.     required: "请填写确认密码",   
 
101.     equalTo: "两次密码输入不相同"   
 
102.    },   
 
103.    question: {   
 
104.     required: "请填写您的密码提示问题"   
 
105.    },   
 
106.    answer: {   
 
107.     required: "请填写您的密码提示答案"   
 
108.    },   
 
109.    realName: {   
 
110.     required: "请填写您的真实姓名"   
 
111.    },   
 
112.    email: {   
 
113.     required: "请输入一个Email地址",   
 
114.     email: "请输入一个有效的Email地址"   
 
115.    }   
 
116.   },   
 
117/* 错误信息的显示位置 */   
 
118.   errorPlacement: function(error, element) {   
 
119.    error.appendTo( element.parent() );   
 
120.   },   
 
121/* 验证通过时的处理 */   
 
122.   success: function(label) {   
 
123.    // set   as text for IE   
 124.    label.html(" ").addClass("checked");   
 
125.   },   
 
126/* 获得焦点时不验证 */   
 
127.   focusInvalid: false,   
 
128.   onkeyup: false   
 
129. });   
 
130.   
 
131// 输入框获得焦点时,样式设置   
 132. $('input').focus(function(){   
 
133.   if($(this).is(":text"|| $(this).is(":password"))   
 
134.    $(this).addClass('focus');   
 
135.   if ($(this).hasClass('have_tooltip')) {   
 
136.    $(this).parent().parent().removeClass('field_normal').addClass('field_focus');   
 
137.   }   
 
138. });   
 
139.   
 
140// 输入框失去焦点时,样式设置   
 141. $('input').blur(function() {   
 
142.   $(this).removeClass('focus');   
 
143.   if ($(this).hasClass('have_tooltip')) {   
 
144.    $(this).parent().parent().removeClass('field_focus').addClass('field_normal');   
 
145.   }   
 
146. });   
 
147. });  


网上的资料有人说,它跟prototype包会有冲突,我还没有同时使用过,这点不是很清楚,但我是发现一个问题:
对于最小/大 长度的验证方法,作者可能考虑到大家的命名习惯不同,同时做了minLength和minlength(maxLength和maxlength)方法, 应该哪一个都是可以的,但对于用户Message来说,只能够定义针对minlength(maxlength),才能调用用户自定义的Message,
否则只是调用包的默认Message,但具体原因还没有查清楚。同时,这个插件提供了本地化的消息,但对于我这里初学者来说,怎么使用它还有待摸索!

posted on 2009-12-21 14:31 seal 阅读(1032) 评论(0)  编辑  收藏 所属分类: JQuery

只有注册用户登录后才能发表评论。


网站导航: