jqueryカスタム検証

17307 ワード

$(document).ready( function() {

/**
 *        
 *
 */
function isIdCardNo(num) {

 var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
 var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");
 var varArray = new Array();
 var intValue;
 var lngProduct = 0;
 var intCheckDigit;
 var intStrLen = num.length;
 var idNumber = num;
   // initialize
     if ((intStrLen != 15) && (intStrLen != 18)) {
         return false;
     }
     // check and set value
     for(i=0;i<intStrLen;i++) {
         varArray[i] = idNumber.charAt(i);
         if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
             return false;
         } else if (i < 17) {
             varArray[i] = varArray[i] * factorArr[i];
         }
     }
     
     if (intStrLen == 18) {
         //check date
         var date8 = idNumber.substring(6,14);
         if (isDate8(date8) == false) {
            return false;
         }
         // calculate the sum of the products
         for(i=0;i<17;i++) {
             lngProduct = lngProduct + varArray[i];
         }
         // calculate the check digit
         intCheckDigit = parityBit[lngProduct % 11];
         // check last digit
         if (varArray[17] != intCheckDigit) {
             return false;
         }
     }
     else{        //length is 15
         //check date
         var date6 = idNumber.substring(6,12);
         if (isDate6(date6) == false) {

             return false;
         }
     }
     return true;
     
 }
/**
 *      “YYYYMM”    
 *
 */
function isDate6(sDate) {
   if(!/^[0-9]{6}$/.test(sDate)) {
      return false;
   }
   var year, month, day;
   year = sDate.substring(0, 4);
   month = sDate.substring(4, 6);
   if (year < 1700 || year > 2500) return false
   if (month < 1 || month > 12) return false
   return true
}
/**
 *      “YYYYMMDD”    
 *
 */
function isDate8(sDate) {
   if(!/^[0-9]{8}$/.test(sDate)) {
      return false;
   }
   var year, month, day;
   year = sDate.substring(0, 4);
   month = sDate.substring(4, 6);
   day = sDate.substring(6, 8);
   var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
   if (year < 1700 || year > 2500) return false
   if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
   if (month < 1 || month > 12) return false
   if (day < 1 || day > iaMonthDays[month - 1]) return false
   return true
}
 //           
 jQuery.validator.addMethod("idcardno", function(value, element) {
   return this.optional(element) || isIdCardNo(value);   
 }, "          ");
 
  //    
 jQuery.validator.addMethod("alnum", function(value, element) {
   return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
 }, "           ");
 
 //       
 jQuery.validator.addMethod("zipcode", function(value, element) {
   var tel = /^[0-9]{6}$/;
   return this.optional(element) || (tel.test(value));
 }, "         ");
 
  //   
 jQuery.validator.addMethod("chcharacter", function(value, element) {
   var tel = /^[\u4e00-\u9fa5]+$/;
   return this.optional(element) || (tel.test(value));
 }, "     ");

//         (         2)
jQuery.validator.addMethod("stringMinLength", 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);
}, $.validator.format("      {0}!"));

//         (         2)
jQuery.validator.addMethod("stringMaxLength", 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);
}, $.validator.format("      {0}!"));

//     
jQuery.validator.addMethod("string", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "         !");

//       
jQuery.validator.addMethod("mobile", 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("phone", function(value, element) {
var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
return this.optional(element) || (tel.test(value));
}, "        !");

//       
jQuery.validator.addMethod("zipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "        !");

//             
jQuery.validator.addMethod("begin", function(value, element, param) {
var begin = new RegExp("^" + param);
return this.optional(element) || (begin.test(value));
}, $.validator.format("    {0}   !"));

//             
jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
return value != $(param).val();
}, $.validator.format("        !"));

//             
jQuery.validator.addMethod("notEqual", function(value, element, param) {
return value != param;
}, $.validator.format("       {0}!"));

//           (    )
jQuery.validator.addMethod("gt", function(value, element, param) {
return value > param;
}, $.validator.format("       {0}!"));

//              
jQuery.validator.addMethod("decimal", function(value, element) {
var decimal = /^-?\d+(\.\d{1,2})?$/;
return this.optional(element) || (decimal.test(value));

jQuery.validate   
2010 04 12      14:33

                                                      

validate(options)            :Validator            FORM

valid()                             :Boolean                

rules()                             :Options                  

rules(add,rules)              :Options               

rules(remove,rules)
  

jquery.validate     jquery          ,                  ,               ,              。

jquery.validate     :http://bassistance.de/jquery-plugins/jquery-plugin-validation/

    :
1、    jquery.js jquery.validate.js   js  (  :jquery   jquery.validate.js      ,     )

<script type="text/javascript" src="jquery.js"></script>       
<script type="text/javascript" src="jquery.validate.js"></script>

2、                  (           ,        )

var validator = $("formId").validate({// #formId          ID
   errorElement :"div",//   "div"      ,   :"label"
   wrapper:"li",//   "li"       errorELement   
   errorClass :"validate-error",//      css  "error"
   onsubmit:true,//         ,  :true
   onfocusout:true,//           ,  :true
   onkeyup :true,//           ,  :true
   onclick:false,//           (    checkbox,radiobox)
   focusCleanup:false,//               ,       
       rules: {
                    loginName: {//           name
                        required: true//     :  
                    },
                    loginPassword: {//           name
                        required: true,//     :  
                        minlength: 5//     :     5
                    },
                    email: {//           name
                        required: true,//     :  
                        email: true//     :   email
                    }
                },
                messages: {
                    loginName: {
                        required: "        !"//         
                    },
                    loginPassword: {
                        required: "       !",
                        minlength: jQuery.format("       {0}   !")
                    },
                    email: {
                        required: "email     ",
                        email: "        !"
                    }
                }

2、  meta String      ,        class (  meta String      jquery.metadata.js  )

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.metadata.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>

<form id="validate" action="admin/transfer!save.action" method="post">
<input type="text" class="required" name="entity.name" />
<input type="text" class="email" name="entity.email" />
<input type="submit" class="button" value="   " />
</form>
<script type="text/javascript">
$(document).ready(
function() {
$("#formId").validate({// #formId          ID
   meta :"validate"//   meta String      (       class )
   errorElement :"div",//   "div"      ,   :"label"
   wrapper:"li",//   "li"       errorELement   
   errorClass :"validate-error",//      css  "error"
   onsubmit:true,//         ,  :true
   onfocusout:true,//           ,  :true
   onkeyup :true,//           ,  :true
   onclick:false,//           (    checkbox,radiobox)
   focusCleanup:false,//               ,       
});
})
</script>


  : Struts2        name="entity.name"   input  ( name             ),            ("")    , :

   rules: {
                    "entity.loginName": {//           name
                        required: true//     :  
                    }
                },
                messages: {
                    "entity.loginName": {
                        required: "        !"//         
                    }
                }

   email:[email protected]         java     
         payj      ,  java            Struts2 spring hibernate jquery         ,    。        ,  。。。

。


 :

      :
required()   :Boolean       
required(dependency-expression)   :Boolean              
required(dependency-callback)   :Boolean               
remote(url)   :Boolean       。url           
minlength(length)   :Boolean       
maxlength(length)   :Boolean       
rangelength(range)   :Boolean         [min,max]
min(value)   :Boolean      
max(value)   :Boolean      
email()   :Boolean         
range(range)   :Boolean       
url()   :Boolean   URL  
date()   :Boolean       (  30/30/2008   ,             )
dateISO()   :Boolean   ISO       
dateDE()   :Boolean          (29.04.1994 or 1.1.2006)
number()   :Boolean        (     )
digits()   :Boolean     
creditcard()   :Boolean       
accept(extension)   :Boolean            
equalTo(other)   :Boolean               
phoneUS()   :Boolean          


validate ()    :
debug:      (     ): $(".selector").validate
({
   debug:true
})
        : $.validator.setDefaults({
   debug:true
})
submitHandler:
          ,            ,         $(".selector").validate({
   submitHandler:function(form) {
$(form).ajaxSubmit();
   }
})
ignore:
           $("#myform").validate({
   ignore:".ignore"
})
rules:
     ,key:value   ,key       ,value          $(".selector").validate({
   rules:{
     name:"required",
     email:{
       required:true,
       email:true
     }
   }
})
messages:
        key:value   key       ,         $(".selector").validate({
   rules:{
     name:"required",
     email:{
       required:true,
       email:true
     }
   },
   messages:{
     name:"Name    ",
     email:{
       required:"E-mail    ",
       email:"E-mail     "
     }
   }
})
groups:
        ,       , error Placement            $("#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
})
Onubmit Boolean   :true
        $(".selector").validate({
   onsubmit:false
})
onfocusout Boolean   :true
           $(".selector").validate({
   onfocusout:false
})
onkeyup Boolean   :true
           $(".selector").validate({
   onkeyup:false
})
onclick Boolean   :true
          (    checkbox,radiobox) $(".selector").validate({
   onclick:false
})
focusInvalid Boolean   :true
     ,        (                     )      $(".selector").validate({
   focusInvalid:false
})
focusCleanup Boolean   :false
              ,       (    focusInvalid.    ) $(".selector").validate({
   focusCleanup:true
})
errorClass String   :"error"
       css  ,             $(".selector").validate({
   errorClass:"invalid"
})
errorElement String   :"label"
           $(".selector").validate
   errorElement:"em"
})
wrapper String
           errorELement    $(".selector").validate({
   wrapper:"li"
})
errorLabelContainer Selector
                $("#myform").validate({
   errorLabelContainer:"#messageBox",
   wrapper:"li",
   submitHandler:function() { alert("Submitted!") }
})

showErrors:
     ,                   $(".selector").validate({
   showErrors:function(errorMap,errorList) {
        $("#summary").html("Your form contains " + this.numberOfInvalids() + " errors,see details below.");
        this.defaultShowErrors();
   }
})
errorPlacement:
     ,            $("#myform").validate({
rrorPlacement:function(error,element) { error.appendTo(element.parent("td").next("td"));
   },
   debug:true

})
success:
              ,        ,     css ,        $("#myform").validate({
        success:"valid",
        submitHandler:function() { alert("Submitted!") }
})
highlight:
              ,   


addMethod(name,method,message)  :
  name         
  method     ,      (value,element,param) value     ,element      param   ,     addMethod    built-in Validation methods 

              ,       ,   a-f,    :

$.validator.addMethod("af",function(value,element,params){
   if(value.length>1){
    return false;
   }
   if(value>=params[0] && value<=params[1]){
    return true;
   }else{
    return false;
   }
},"       , a-f");
    ,         id="username",  rules  
username:{
   af:["a","f"]
}

addMethod      ,            ,   af
addMethod      ,          ,      :"       , a-f"
addMethod      ,     ,      ,              
        ,   ,  af:"a",  a         ,      ,  [] ,     

}, $.validator.format("          !"));

});