jQuery.validator

官方地址: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 [email protected]"     }   }})

 

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 })

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章