JS 验证身份证号码的正确性

 1 function isTrueValidateCodeBy18IdCard(idCard) {  
 2                 var a_idCard = idCard.split("");// 
 3                 /*
 4                  *    var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];//    
 5                  *    var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];//   
 6                  *    此种数组表示时候于IE9以上的浏览器(Firefox,Chrome,Safari等未测试)。
 7                  *  下述方法可用于IE8 版本(IE8一下未测试- -!)。IE不支持强制数组操作
 8                 */
 9                 var Wi = new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 );// 加权因子   
10                 var ValideCode = new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 );// 身份证验证位值.10代表X     
11                 var sum = 0; // 声明加权求和变量   
12                 if ((a_idCard[17] == 'x')||(a_idCard[17] == 'X')) {   
13                     a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作   
14                 }   
15                 for ( var i = 0; i < 17; i++) {   
16                     sum += Wi[i] * a_idCard[i];// 加权求和   
17                 }   
18                 valCodePosition = sum % 11;// 得到验证码所位置   
19                 if (a_idCard[17] != ValideCode[valCodePosition]) {
20                      alert("您的身份证号码最后一位校验码不正确,请重新输入");21                     return false;
22                 }   
23                 else{
24                     return true;
25                 }  
26             }
原文地址:https://www.cnblogs.com/wanhl/p/3023767.html