客户端验证的极品--jQuery.validator

最近在做一个用户注册登录的页面,资料查寻过程中发现了一个非常不错的客户端验证的极品-jQuery.validate。 

它是著名的JavaScript包jQuery的一个插件,其实它还有其它的一些插件应该都爽,有待慢慢来学习 


官方地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 

jQuery用户手册:http://jquery.org.cn/visual/cn/index.xml 


开发使用起来非常简单明了, 

我的代码:

Java代码

$(document).ready(function(){    

  

   

$.validator.setDefaults({    

  submitHandler: function(form) { form.submit(); }    

});    

// 中文字两个字节    

jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {    

  var length = value.length;    

  for(var i = 0; i < value.length; i++){    

   if(value.charCodeAt(i) > 127){    

    length++;    

   }    

  }    

  return this.optional(element) || ( length >= param[0] && length <= param[1] );    

}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");    

  

   

// 身份证号码验证    

jQuery.validator.addMethod("isIdCardNo", function(value, element) {    

  return this.optional(element) || isIdCardNo(value);    

}, "请正确输入您的身份证号码");    

  

// 字符验证    

jQuery.validator.addMethod("userName", function(value, element) {    

  return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);    

}, "用户名只能包括中文字、英文字母、数字和下划线");    

  

// 手机号码验证    

jQuery.validator.addMethod("isMobile", function(value, element) {    

  var length = value.length;    

  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value));    

}, "请正确填写您的手机号码");    

  

// 电话号码验证    

jQuery.validator.addMethod("isPhone", function(value, element) {    

  var tel = /^(\d{3,4}-?)?\d{7,9}$/g;    

  return this.optional(element) || (tel.test(value));    

}, "请正确填写您的电话号码");    

  

// 邮政编码验证    

jQuery.validator.addMethod("isZipCode", function(value, element) {    

  var tel = /^[0-9]{6}$/;    

  return this.optional(element) || (tel.test(value));    

}, "请正确填写您的邮政编码");    

$(regFrom).validate({    

   

  rules: {    

   userName: {    

    required: true,    

    userName: true,    

    byteRangeLength: [3,15]    

   },    

   password: {    

    required: true,    

    minLength: 5    

   },    

   repassword: {    

    required: true,    

    minLength: 5,    

    equalTo: "#password"    

   },    

   question: {    

    required: true    

   },    

   answer: {    

    required: true    

   },    

   realName: {    

    required: true    

   },    

   cardNumber: {    

    isIdCardNo: true    

   },    

   mobilePhone: {    

    isMobile: true    

   },    

   phone: {    

    isPhone: true    

   },    

   email: {    

    required: true,    

    email: true    

   },    

   zipCode: {    

    isZipCode:true    

   }    

  },    

   

  messages: {    

   userName: {    

    required: "请填写用户名",    

    byteRangeLength: "用户名必须在3-15个字符之间(一个中文字算2个字符)"    

   },    

   password: {    

    required: "请填写密码",    

    minlength: jQuery.format("输入{0}.")    

   },    

   repassword: {    

    required: "请填写确认密码",    

    equalTo: "两次密码输入不相同"    

   },    

   question: {    

    required: "请填写您的密码提示问题"    

   },    

   answer: {    

    required: "请填写您的密码提示答案"    

   },    

   realName: {    

    required: "请填写您的真实姓名"    

   },    

   email: {    

    required: "请输入一个Email地址",    

    email: "请输入一个有效的Email地址"    

   }    

  },    

   

  errorPlacement: function(error, element) {    

   error.appendTo( element.parent() );    

  },    

   

  success: function(label) {    

   // set   as text for IE    

   label.html(" ").addClass("checked");    

  },    

   

  focusInvalid: false,    

  onkeyup: false    

});    

  

// 输入框获得焦点时,样式设置    

$('input').focus(function(){    

  if($(this).is(":text") || $(this).is(":password"))    

   $(this).addClass('focus');    

  if ($(this).hasClass('have_tooltip')) {    

   $(this).parent().parent().removeClass('field_normal').addClass('field_focus');    

  }    

});    

  

// 输入框失去焦点时,样式设置    

$('input').blur(function() {    

  $(this).removeClass('focus');    

  if ($(this).hasClass('have_tooltip')) {    

   $(this).parent().parent().removeClass('field_focus').addClass('field_normal');    

  }    

});    

});   

$(document).ready(function(){ 


 

$.validator.setDefaults({ 

  submitHandler: function(form) { form.submit(); } 

}); 

// 中文字两个字节 

jQuery.validator.addMethod("byteRangeLength", function(value, element, param) { 

  var length = value.length; 

  for(var i = 0; i < value.length; i++){ 

   if(value.charCodeAt(i) > 127){ 

    length++; 

   } 

  

  return this.optional(element) || ( length >= param[0] && length <= param[1] ); 

}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)"); 


 

// 身份证号码验证 

jQuery.validator.addMethod("isIdCardNo", function(value, element) { 

  return this.optional(element) || isIdCardNo(value); 

}, "请正确输入您的身份证号码"); 


// 字符验证 

jQuery.validator.addMethod("userName", function(value, element) { 

  return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value); 

}, "用户名只能包括中文字、英文字母、数字和下划线"); 


// 手机号码验证 

jQuery.validator.addMethod("isMobile", function(value, element) { 

  var length = value.length; 

  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value)); 

}, "请正确填写您的手机号码"); 


// 电话号码验证 

jQuery.validator.addMethod("isPhone", function(value, element) { 

  var tel = /^(\d{3,4}-?)?\d{7,9}$/g; 

  return this.optional(element) || (tel.test(value)); 

}, "请正确填写您的电话号码"); 


// 邮政编码验证 

jQuery.validator.addMethod("isZipCode", function(value, element) { 

  var tel = /^[0-9]{6}$/; 

  return this.optional(element) || (tel.test(value)); 

}, "请正确填写您的邮政编码"); 

$(regFrom).validate({ 

 

  rules: { 

   userName: { 

    required: true, 

    userName: true, 

    byteRangeLength: [3,15] 

   }, 

   password: { 

    required: true, 

    minLength: 5 

   }, 

   repassword: { 

    required: true, 

    minLength: 5, 

    equalTo: "#password" 

   }, 

   question: { 

    required: true 

   }, 

   answer: { 

    required: true 

   }, 

   realName: { 

    required: true 

   }, 

   cardNumber: { 

    isIdCardNo: true 

   }, 

   mobilePhone: { 

    isMobile: true 

   }, 

   phone: { 

    isPhone: true 

   }, 

   email: { 

    required: true, 

    email: true 

   }, 

   zipCode: { 

    isZipCode:true 

   } 

  }, 

 

  messages: { 

   userName: { 

    required: "请填写用户名", 

    byteRangeLength: "用户名必须在3-15个字符之间(一个中文字算2个字符)" 

   }, 

   password: { 

    required: "请填写密码", 

    minlength: jQuery.format("输入{0}.") 

   }, 

   repassword: { 

    required: "请填写确认密码", 

    equalTo: "两次密码输入不相同" 

   }, 

   question: { 

    required: "请填写您的密码提示问题" 

   }, 

   answer: { 

    required: "请填写您的密码提示答案" 

   }, 

   realName: { 

    required: "请填写您的真实姓名" 

   }, 

   email: { 

    required: "请输入一个Email地址", 

    email: "请输入一个有效的Email地址" 

   } 

  }, 

 

  errorPlacement: function(error, element) { 

   error.appendTo( element.parent() ); 

  }, 

 

  success: function(label) { 

   // set   as text for IE 

   label.html(" ").addClass("checked"); 

  }, 

 

  focusInvalid: false, 

  onkeyup: false 

}); 


// 输入框获得焦点时,样式设置 

$('input').focus(function(){ 

  if($(this).is(":text") || $(this).is(":password")) 

   $(this).addClass('focus'); 

  if ($(this).hasClass('have_tooltip')) { 

   $(this).parent().parent().removeClass('field_normal').addClass('field_focus'); 

  

}); 


// 输入框失去焦点时,样式设置 

$('input').blur(function() { 

  $(this).removeClass('focus'); 

  if ($(this).hasClass('have_tooltip')) { 

   $(this).parent().parent().removeClass('field_focus').addClass('field_normal'); 

  

}); 

}); 


网上的资料有人说,它跟prototype包会有冲突,我还没有同时使用过,这点不是很清楚,但我是发现一个问题: 

对于最小/大长度的验证方法,作者可能考虑到大家的命名习惯不同,同时做了minLength和minlength(maxLength和maxlength)方法,应该哪一个都是可以的,但对于用户Message来说,只能够定义针对minlength(maxlength),才能调用用户自定义的Message, 

否则只是调用包的默认Message,但具体原因还没有查清楚。同时,这个插件提供了本地化的消息,但对于我这里初学者来说,怎么使用它还有待摸索!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值