Jquery身份证号校验以及根据身份证自动写入出生年月

Posted 微笑Tears

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jquery身份证号校验以及根据身份证自动写入出生年月相关的知识,希望对你有一定的参考价值。

效果图:

根据身份证号自动写入出生年月

身份证号码校验:

js代码部分:

  1 $(function() {
  2     jQuery.validator.addMethod("isIdCardNo", function (value, element) {
  3         return this.optional(element) || isIdCardNo(value);
  4     }, "请正确输入您的身份证号码");
  5     
  6     $.datepicker.setDefaults($.datepicker.regional["zh-CN"]);
  7 
  8     $(\'.datepicker\').datepicker({
  9         dateFormat : \'yy-mm-dd\',
 10         changeMonth : true,
 11         changeYear : true
 12     });
 13 
 14     $(\'#form\').validate({
 15         onkeyup : false,
 16         rules : {
 17             \'memberDetail.realName\' : {
 18                 minlength : 2,
 19                 maxlength : 10,
 20             },
 21             card:{
 22                 required : true
 23             },
 24             name : {
 25                 digits:true,
 26                 required : true,
 27                 minlength : 11,
 28                 maxlength : 11,
 29                 remote : {
 30                     url : global.context + \'/admin/members/duplicate\',
 31                     data : {
 32                         name : $(\'#mobile\').val()
 33                     }
 34                 }
 35             },
 36             \'memberDetail.ic\': {
 37                 isIdCardNo: true
 38             },
 39             \'memberDetail.birthday\' : {
 40                 dateISO : true
 41             },
 42             \'memberDetail.address\' : {
 43                 maxlength : 200
 44             }
 45         },
 46         messages : {
 47             \'memberDetail.realName\' : {
 48                 minlength : \'最短长度为2\',
 49                 maxlength : \'最大长度为10\'
 50             },
 51             card:{
 52                 required : \'请选择一种类型\'
 53             },
 54             name : {
 55                 digits:\'请输入数字\',
 56                 required : \'请输入手机号\',
 57                 remote : \'手机号不能重复\',
 58                 minlength : \'手机号为11位\',
 59                 maxlength : \'手机号为11位\'
 60             },
 61             \'memberDetail.birthday\' : {
 62                 dateISO : \'请输入正确的日期格式yyyy-mm-dd\'
 63             },
 64             \'memberDetail.address\' : {
 65                 maxlength : \'长度小于200\'
 66             }
 67         }
 68     });
 69     //根据身份证信息写入出生年月
 70     $("#ic").blur(function(){
 71         if($.trim($("#ic").val()) != "") {
 72             var date = "";
 73             if($("#ic").val().length == 15) {
 74                 date =  \'19\'+$("#ic").val().substr(6,2)+\'-\'+$("#ic").val().substr(8,2)+\'-\'+$("#ic").val().substr(10,2);
 75             } else if ($("#ic").val().length == 18) {
 76                 date =  $("#ic").val().substr(6,4)+\'-\'+$("#ic").val().substr(10,2)+\'-\'+$("#ic").val().substr(12,2);
 77             }
 78             $("[id=\'memberDetail.birthday\']").val(date);
 79         }        
 80     });
 81 })
 82 
 83 //增加身份证验证
 84     function isIdCardNo(num) {
 85         var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
 86         var parityBit = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
 87         var varArray = new Array();
 88         var intValue;
 89         var lngProduct = 0;
 90         var intCheckDigit;
 91         var intStrLen = num.length;
 92         var idNumber = num;
 93         // initialize
 94         if ((intStrLen != 15) && (intStrLen != 18)) {
 95             return false;
 96         }
 97         // check and set value
 98         for (i = 0; i < intStrLen; i++) {
 99             varArray[i] = idNumber.charAt(i);
100             if ((varArray[i] < \'0\' || varArray[i] > \'9\') && (i != 17)) {
101                 return false;
102             } else if (i < 17) {
103                 varArray[i] = varArray[i] * factorArr[i];
104             }
105         }
106         if (intStrLen == 18) {
107             //check date
108             var date8 = idNumber.substring(6, 14);
109             if (isDate8(date8) == false) {
110                 return false;
111             }
112             // calculate the sum of the products
113             for (i = 0; i < 17; i++) {
114                 lngProduct = lngProduct + varArray[i];
115             }
116             // calculate the check digit
117             intCheckDigit = parityBit[lngProduct % 11];
118             // check last digit
119             if (varArray[17] != intCheckDigit) {
120                 return false;
121             }
122         }
123         else {        //length is 15
124             //check date
125             var date6 = idNumber.substring(6, 12);
126             if (isDate6(date6) == false) {
127                 return false;
128             }
129         }
130         return true;
131     }
132     function isDate6(sDate) {
133         if (!/^[0-9]{6}$/.test(sDate)) {
134             return false;
135         }
136         var year, month, day;
137         year = sDate.substring(0, 4);
138         month = sDate.substring(4, 6);
139         if (year < 1700 || year > 2500) return false;
140         if (month < 1 || month > 12) return false;
141         return true;
142     }
143 
144     function isDate8(sDate) {
145         if (!/^[0-9]{8}$/.test(sDate)) {
146             return false;
147         }
148         var year, month, day;
149         year = sDate.substring(0, 4);
150         month = sDate.substring(4, 6);
151         day = sDate.substring(6, 8);
152         var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
153         if (year < 1700 || year > 2500) return false;
154         if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1] = 29;
155         if (month < 1 || month > 12) return false;
156         if (day < 1 || day > iaMonthDays[month - 1]) return false;
157         return true;
158     }

页面元素的验证是基于jquery validate框架

以上是关于Jquery身份证号校验以及根据身份证自动写入出生年月的主要内容,如果未能解决你的问题,请参考以下文章

如何用jQuery实现输入身份证号码后,出生日期自动生成

如何用身份证在Excel中自动提取姓名性别出生日期年龄

JAVA编程,校验身份证并提取其中的出生年月

python身份证号换成***

js 精确验证身份证(地址编码出生日期校验位验证)

C零基础视频-26-身份证号校验程序