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 }