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 }