jQuery.validator

来源:互联网 发布:实时视频流压缩算法 编辑:程序博客网 时间:2024/06/06 23:50

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

 

$(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');
  }
});
});

 

 

 

 

 

 

身份验证方法

 

 

首先在jquery.validate.js找到
equalTo : function(value, element, param) {
  return value == $(param).val();
},

在下面添加如下代码
idcard : function(sId, element) {
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
var iSum=0 ;
var info="" ;
if(sId=="") return true;
if(!/^/d{17}(/d|x)$/i.test(sId)) return false;
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null) return false;
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/")) ;
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return false;
for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
if(iSum%11!=1) return false;
return true;
}

使用方法如下
$(document).ready(function(){
$("#no").focus();
$("#inputHouse").validate({
rules: {
idcard:{
required:true,
idcard:true
}
},
messages: {
idcard: {
idcard: "身份证号非法"
}
}
});
});

 

 

 

 

 

 

 

 

 

 

validate自带的默认验证

        required: "必选字段",
        remote: "请修正该字段",
        email: "请输入正确格式的电子邮件",
        url: "请输入合法的网址",
        date: "请输入合法的日期",
        dateISO: "请输入合法的日期 (ISO).",
        number: "请输入合法的数字",
        digits: "只能输入整数",
        creditcard: "请输入合法的信用卡号",
        equalTo: "请再次输入相同的值",
        accept: "请输入拥有合法后缀名的字符串",
        maxlength: jQuery.format("请输入一个长度最多是 {0} 的字符串"),
        minlength: jQuery.format("请输入一个长度最少是 {0} 的字符串"),
        rangelength: jQuery.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
        range: jQuery.format("请输入一个介于 {0} 和 {1} 之间的值"),
        max: jQuery.format("请输入一个最大为 {0} 的值"),
        min: jQuery.format("请输入一个最小为 {0} 的值")

validate ()的可选项
debug:进行调试模式
$(".selector").validate({   debug: true}) 

把调试设置为默认

$.validator.setDefaults({   debug: true})

submitHandler:用其他方式替代默认的SUBMIT,比如用AJAX的方式提交

$(".selector").validate({   submitHandler: function(form) {    $(form).ajaxSubmit();   }})

ignore:忽略某些元素不验证

$("#myform").validate({   ignore: ".ignore"})

rules: 默认下根据form的classes, attributes, metadata判断,但也可以在validate函数里面声明

 


Key/value 可自定义规则. Key是对象的名字 value是对象的规则,可以组合使用 class/attribute/metadata rules.

 

以下代码特别验证selector类中name='name'是必填项并且 email是既是必填又要符合email的格式

$(".selector").validate({   rules: {     // simple rule, converted to {required:true}     name: "required",   

  // compound rule     email: {       required: true,       email: true     }   }})messages:更改默认的提示信息

$(".selector").validate({   rules: {     name: "required",     email: {       required: true,       email: true     }   },   messages: {     name: "Please specify your name",     email: {       required: "We need your email address to contact you",       email: "Your email address must be in the format of name@domain.com"     }   }})

 

groups:定义一个组,把几个地方的出错信息统一放在一个地方,用errorPlacement控制把出错信息放在哪里

$("#myform").validate({  groups: {    username: "fname lname"  },  errorPlacement: function(error, element) {     if (element.attr("name") == "fname" || element.attr("name") == "lname" )       error.insertAfter("#lastname");     else       error.insertAfter(element);   },   debug:true })

原创粉丝点击