1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| let validateIdCard = (rule, value, callback) => {
// 只能是18位
if (!value || value.length != 18) { callback(new Error("证件号码输入有误,请重新输入!")); }
// 取出本体码 var idcard_base = value.substr(0, 17); // 取出校验码 var verify_code = value.substr(17, 1); // 加权因子 var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 校验码对应值 var verify_code_list = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
// 根据前17位计算校验码 var total = 0;
for (var i = 0; i < 17; i++) { total += idcard_base.substr(i, 1) * factor[i]; } // 取模 var mod = total % 11; // 比较校验码
if (verify_code != verify_code_list[mod]) { callback(new Error("证件号码输入有误,请重新输入!")); } else { callback(); } };
|