$('#idcardno').blur(function () {
var idcard = $(this).val();
var reg = /^\d{17}\d|x$/;
var is_ok = reg.test(idcard);
var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
if (is_ok) {
var sum = 0, idx;
for (var i = 0; i < idcard.length - 1; i++) {
// 对前17位数字与权值乘积求和
sum += parseInt(idcard.substr(i, 1), 10) * arrExp[i];
}
// 计算模(固定算法)
idx = sum % 11;
// 检验第18为是否与校验码相等
if (arrValid[idx] == idcard.substr(17, 1)) {
$('#idcardinfo').html('ok').css({'color': 'green'})
} else {
$('#idcardinfo').html('身份证号码错误').css({'color': 'red'})
}
} else {
$('#idcardinfo').html('身份证号码错误').css({'color': 'red'})
}
});
来源:CSDN
作者:python菜鸡王
链接:https://blog.csdn.net/weixin_43272057/article/details/103244275