jquery validate.addMethod 如何自定义验证方法

飘逸的风10年前 (2015-10-23)前端5600
项目中使用的jQuery添加的校验的方法
$(document).ready(function(){
  /* 设置默认属性 */       
  $.validator.setDefaults({       
      submitHandler: function(form) {    
          form.submit();    
     }       
 });   
   
 // 字符验证       
 jQuery.validator.addMethod("stringCheck", function(value, element) {       
     return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);       
 }, "只能包括中文字、英文字母、数字和下划线");   
   
 // 中文字两个字节       
 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("isMobile", function(value, element) {       
     var length = value.length;   
     var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;   
     return this.optional(element) || (length == 11 && mobile.test(value));       
 }, "请正确填写您的手机号码");       
      
 // 电话号码验证       
 jQuery.validator.addMethod("isTel", function(value, element) {       
     var tel = /^\d{3,4}-?\d{7,9}$/;    //电话号码格式010-12345678   
     return this.optional(element) || (tel.test(value));       
 }, "请正确填写您的电话号码");   
   
 // 联系电话(手机/电话皆可)验证   
 jQuery.validator.addMethod("isPhone", function(value,element) {   
     var length = value.length;   
     var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;   
     var tel = /^\d{3,4}-?\d{7,9}$/;   
     return this.optional(element) || (tel.test(value) || mobile.test(value));   
   
 }, "请正确填写您的联系电话");   
     
 // 邮政编码验证       
 jQuery.validator.addMethod("isZipCode", function(value, element) {       
     var tel = /^[0-9]{6}$/;       
     return this.optional(element) || (tel.test(value));       
 }, "请正确填写您的邮政编码");    
   
 //开始验证   
 $('#submitForm').validate({   
     /* 设置验证规则 */  
     rules: {   
         username: {   
             required:true,   
             stringCheck:true,   
             byteRangeLength:[3,15]   
         },   
         email:{   
             required:true,   
             email:true  
         },   
         phone:{   
             required:true,   
             isPhone:true  
         },   
         address:{   
             required:true,   
             stringCheck:true,   
             byteRangeLength:[3,100]   
         }   
     },   
        
     /* 设置错误信息 */  
     messages: {   
         username: {       
             required: "请填写用户名",   
             stringCheck: "用户名只能包括中文字、英文字母、数字和下划线",   
             byteRangeLength: "用户名必须在3-15个字符之间(一个中文字算2个字符)"       
         },   
         email:{   
             required: "请输入一个Email地址",   
             email: "请输入一个有效的Email地址"  
         },   
         phone:{   
             required: "请输入您的联系电话",   
             isPhone: "请输入一个有效的联系电话"  
        },   
        address:{   
            required: "请输入您的联系地址",   
            stringCheck: "请正确输入您的联系地址",   
            byteRangeLength: "请详实您的联系地址以便于我们联系您"  
        }   
    },   
       
   /* 设置验证触发事件 */  
    focusInvalid: false,   
    onkeyup: false,   
       
    /* 设置错误信息提示DOM */  
    errorPlacement: function(error, element) {       
        error.appendTo( element.parent());       
    },     
      
 });   
 
});
 
 
supplier-commons-vacation.js
 
 //定义订单的公共的函数方法
 function define_common_method(){
 
    //设置默认的操作
     $.validator.setDefaults({    
     submitHandler: function(form) { form.submit(); }    
        }); 
   
     //添加自定义校验函数
     $.validator.addMethod("charNo",function(value,element) {    
    var length = value.length;  
    var your_tel =/[\W]/g;
    return this.optional(element) || (length<=8&&!your_tel.test(value));   
  },"请输入英文字符或数字!");
  
  //添加验证操作名称的校验函数
  $.validator.addMethod("charString",function(value,element) {    
      var length = value.length;  
      var your_tel =/[^\a-zA-Z\u4E00-\u9FA5]/g;
      var your_tel2=/^[A-Za-z]*$/;
      return this.optional(element) || (length<=20&&!your_tel.test(value));   
  },"请输入中文或英文名称"); 
  
  //验证手机号码(仅仅13和15开头)
  $.validator.addMethod("isPhone", function(value,element) {   
           var length = value.length;   
        var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;   
         var tel = /^\d{3,4}-?\d{7,9}$/;   
        return this.optional(element) || (tel.test(value) || mobile.test(value));   
         }, "请正确填写您的联系电话或者手机");   
  
 }
 
 
supplier-finance.js
jQuery(function($) {
 
 //绑定所有的事件
 $(document).ready(function() {
  bind_component_event();
 });
 
 
 //绑定的公共的事件
 function bind_component_event() {
    //定义一些公共的方法
    define_common_method();
  
    //环游供应商付款的验证(度假)  
    bind_checkCondition_component_event();
    
    
    //环游供应商付款验证的(供应商)
    bind_supplierConditionForm_component_event();
 }
 
 //环游供应商付款(度假)的验证  
 function bind_checkCondition_component_event() {
  
  //待收款款订单验证
  $("#checkConditionForm").validate({
   event: "submit",
   errorPlacement: function(error, element) {
   },
   rules:{
     "searchCon.accountNo":{
      charNo:true
     },
     "searchCon.supplierName":{
      charString:true
     }
    },
    messages:{
     "searchCon.accountNo":{
        charNo:"请输入正确的对账编号!"
       },
       "searchCon.supplierName":{
        charString:"请输入正确的供应商名称!"
       }
    },
    
    //设置验证触发事件
   focusInvalid:false,
   onkeyup:false,
            
         //设置错误信息提示DOM    
   errorPlacement:function(error,element){
      error.appendTo(element.parent());
   }
    
    
  });
 }
 //环游供应商付款的验证(供应商)  
 function bind_supplierConditionForm_component_event() {
  
  //待收款款订单验证
  $("#supplierConditionForm").validate({
   event: "submit",
   errorPlacement: function(error, element) {
   },
   rules:{
     "searchCon.accountNo":{
      charNo:true
     },
     "searchCon.supplierName":{
      charString:true
     }
    },
    messages:{
     "searchCon.accountNo":{
        charNo:"请输入正确的对账编号!"
       },
       "searchCon.supplierName":{
        charString:"请输入正确的供应商名称!"
       }
    },
    
    //设置验证触发事件
   focusInvalid:false,
   onkeyup:false,
            
         //设置错误信息提示DOM    
   errorPlacement:function(error,element){
      error.appendTo(element.parent());
   }
  });
 }
 
});
 
 
关于jQuery的校验的API
 
https://docs.jquery.com/Plugins/Validation/Validator/addMethod
 

https://www.shopxx.net/html/news/2009/1201/59.html

https://jquery.bassistance.de/api-browser/plugins.html

相关文章

lhgCalendar 弹出日历组件

lhgCalendar 弹出日历组件

lhgCalendar是一个功能强大且兼容面广的对日历组件,它拥有精致的界面与友好的接口 精简迷你高效 弹出日历分独立版本和jQuery组件2个,独立版本大小才15K,jQuery版本才9K,...

JS版的in_array和is_array

写PHP代码是我们可以使用is_array()方法来检测一个变量是否是数组,使用in_array()来判断一个变量是否包含在一个数组中,那么在JS中我们该,如何来判断呢?   下面来分享...

jQuery 滚动鼠标中键图片自动改变大小(统一控制)

今天维护一个项目,需要对内容里的图片通过图片中间控制大小。由于是以前完成的,客户之前也没有提出要求,所以对已经添加后的数据没办法在一个个地在图片上加函数。网上查找了一下控制中键的资料,终于找到解决办法...

JS设为首页加入收藏兼容特效

废话不多说,上代码: // 添加到收藏夹 function AddFavorite(sURL, sTitle) { try { if (typeof(sURL) == "undefi...

jquery 事件方法总结

Dom: Attribute:属性 $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img").attr({src:"test.jpg",title:"te...

js 数组操作集合

注意:以下是按操作来分类的,有的方法有多个用途,就有重复 1、数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Arra...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。