js对身份证来进行校验
2013年12月02日
⁄ 综合
⁄ 共 4520字 ⁄ 字号
小 中 大
-
-
- function idCode15To18(sCode15) {
-
-
-
- var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];
-
- var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
-
- var i=0,sum=0,code;
-
- var IDCode = sCode15.substr(0,6)+"19"+sCode15.substr(6);
-
-
-
-
-
- for (i = 1; i <=IDCode.length; i++) {
-
-
-
- sum = sum + Wi[i - 1]*parseInt(IDCode.substr(i - 1, 1));
-
- }
-
-
-
- sum = sum%11;
-
- return IDCode+arrVerifyCode[sum] ;
-
-
-
- }
-
- function checkId(pId){
-
- var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];
-
- var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
-
-
-
- if(pId.length != 15 && pId.length != 18) return "身份证号共有 15 码或18位";
-
-
-
- var Ai=pId.length==18?pId.substring(0,17):pId.slice(0,6)+"19"+pId.slice(6,16);
-
- if (!/^/d+$/.test(Ai)) return "身份证除最后一位外,必须为数字!";
-
- var yyyy=Ai.slice(6,10),mm=Ai.slice(10,12)-1,dd=Ai.slice(12,14);
-
- var d=new Date(yyyy,mm,dd),year=d.getFullYear(),mon=d.getMonth(),day=d.getDate(),now=new Date();
-
- if (year!=yyyy || mon!=mm || day!=dd || d>now || now.getFullYear()-year>140) return "身份证输入错误!";
-
- for(var i=0,ret=0;i<17;i++) ret+=Ai.charAt(i)*Wi[i];
-
- Ai+=arrVerifyCode[ret %=11];
-
- return pId.length ==18 && pId.toLowerCase() != Ai?"身份证最后一位校验失败,身份证输入错误!应该是"+arrVerifyCode[ret %=11]+"请您仔细检查。":Ai;
-
- };
-
- ====================================================================
-
- if(form1.sfzhm.value.trim()==""){
-
- alert("身份证号码不能为空");
-
- form1.sfzhm.focus();
-
- return false;
-
- }else{
-
-
-
-
-
- var tempSfzhm = form1.sfzhm.value.trim();
-
-
-
- tempSfzhm = checkId(tempSfzhm);
-
- tempSfzhm = tempSfzhm.toLowerCase();
-
-
-
-
-
-
-
-
-
-
-
- if((!(tempSfzhm.length==18 && tempSfzhm.substr(17,1)=='x' )) && isNaN(tempSfzhm)){
-
- alert("身份证号码错误!"+tempSfzhm);
-
- form1.sfzhm.focus();
-
- return false;
-
- }else{
-
- var id=String(tempSfzhm);
-
- if(id.length==15){
-
- id=idCode15To18(id);
-
- }
-
-
-
-
-
- var desSex = form1.xb.value.trim();
-
- var desSzdq = form1.szdq.value.trim();
-
- var desCsrq = form1.csrq.value.trim();
-
-
-
- var tempSex=id.slice(14,17)%2?"男":"女";
-
- if(tempSex=="男"){
-
- tempSex = "1";
-
- }else{
-
- tempSex="0";
-
- }
-
- var tempCsrq =id.substr(6,4)+"/"+id.substr(10,2)+"/"+id.substr(12,2);
-
-
-
-
-
-
-
-
-
-
-
- if(desSex!=tempSex){
-
- alert("身份证号码错误!和性别不相符。");
-
- form1.sfzhm.focus();
-
- return false;
-
- }
-
- if(desCsrq!=tempCsrq){
-
- alert("身份证号码错误!和出生日期不相符。");
-
- form1.sfzhm.focus();
-
- return false;
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- document.forms[0].sfzhm.value=id.toLowerCase();
-
- }
-
-
-
- }