请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1490|回复: 0

Js身份证验证函数

[复制链接]

821

主题

821

帖子

2663

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2663
发表于 2019-8-30 08:42:45 | 显示全部楼层 |阅读模式
  1. //            二代身份证号码为 18 位,其最后一位(第 18 位)的计算方法为:
  2. //           1、 将前面的身份证号码 17 位数分别乘以不同的系数。从第一位到第十七位的系数分别 为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
  3. //            2、 将这 17 位数字和系数相乘的结果相加
  4. //           3、 用加出来和除以 11,看余数是多少?
  5. //            4、 余数只可能有 0-1-2-3-4-5-6-7-8-9-10 这 11 个数字。
  6. //               每个数字所对应的 最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2
  7. //               即,如果余数是是 2,就会在身份证的第 18 位数字上出现罗马数字的X。如果余数是 10,身份证的最后一位号码就 是 2
  8. //        身份验证函数
  9. function Authentication() {
  10.   const arrXishu = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //声明系数数组
  11.   var arrch = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; //声明最后一位身份证号码的数组
  12.   var idcard = document.getElementById("IdCard").value;
  13.   var arrIdcard = idcard.split(""); //字符串转化为数组
  14.   var sum = 0;
  15.   if (arrIdcard.length != 18) {
  16.     return alert("输入的号码有误");
  17.   } else {
  18.     for (var index = 0; index < arrXishu.length; index++) {
  19.       sum += parseInt(arrXishu[index]) * arrXishu[index];
  20.     }
  21.     let c = sum % 11;
  22.     let code = arrch(c);
  23.     if (code == arrIdcard.charAt(17)) {
  24.       alert("身份证号码正确");
  25.     } else {
  26.       alert("身份证号码错误");
  27.     }
  28.   }
  29. }

复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户反馈
客户端