js根据身份证最后一位判断身份证号的真假

原创 2018年04月16日 09:37:44
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>验证身份证的真假</title>
<style>
* {
padding: 0;
margin: 0;
}

#box>input {
display: block;
width: 200px;
padding: 0 10px;
height: 40px;
margin: 200px auto;
}
</style>
</head>


<body>
<div style='max-width:600px;height:600px;margin:0 auto;' id='box'>
<input type="text" maxlength='18' id='userId' placeholder='请输入正确的身份证号码' />
</div>


</body>


</html>
<script>

/*
身份证第18位计算法 身份证第18位(校验码)的计算方法
1、将前面的身份证号码17位数分别乘以不同的 系数。
从第一位到第十七位的系数分别为:  7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
2、将这17位数字和系数相乘的结果相加 
3、用加出来和除以11,看余数是多少? 
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。
其分别对应的最后 一位身份证的号码为 
1-0-X-9-8-7-6-5-4-3-2。
5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
例如:某男性的身份证号码是34052419800101001X
首先我们得出前17位的乘积和是189,然后用189除以11得出的结果是17+2/11,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的数字是x。所以,可以判定这是一个合格的身份证号码


*/
window.onload = function() {
// 存储身份证号码的前17位的数字
var arrUser = null
// 存储乘积后的信息到数组里
var arrJi = []
//要乘的系数 固定写法
var xiS = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
// 可能出现的余数
var yuNum = [0,1,2,3,4,5,6,7,8,9,10]
// 余数对应的最后一位身份证号码
var lastNum = [1,0,'x',9,8,7,6,5,4,3,2]
function adds(x, y) {
return x + y
}
// 当change事件改变时获取身份证号码
document.getElementById('userId').onchange = function(){
// 获取输入的身份证号码
var userId = document.getElementById('userId').value
if(userId===''){
return false;
}
// 计算身份证号码的长度
var len = userId.length
// 取出身份证最后一位号码
var  lastValue = document.getElementById('userId').value.split('')[len-1]
if(len===15||len===18){
// 取得身份证除去最后一位的所有号码并将其专为数组
arrUser = document.getElementById('userId').value.split('').slice(0,-1)
for(var i=0;i<17;i++){
// 将相乘后的积数存入提前声明好的数组中
arrJi.push( arrUser[i]*xiS[i] )
}
// 求出arrJi的所有参数的和
var arrJiLast = arrJi.reduce(adds)
// 系数乘以身份证前17位数字的积的和,除以11后的余数
var yuLast = arrJiLast%11
for(var j=0;j<yuNum.length;j++){
if(yuLast===yuNum[j] ){
// 用的是===统一下数据类型
var lastSf = lastNum[j].toString()
if(lastSf===lastValue){
alert('身份证号码是对的')
}else{
alert('您的身份证号码有误')
}
}
}

}else{
alert('请输入正确的身份证号码')
}
}
}
</script>

身份证最后一位算法 JavaScript实现

1.将下面代码复制到记事本中,保存文件名为 *.html2.使用浏览器打开就可以使用了。JavaScript请输入身份证号码:身份证号验证脚本 作者:xzlAwinfunction submit3()...
  • xzlAwin
  • xzlAwin
  • 2015-05-25 00:38:08
  • 642

java--18位身份证号最后一位(检验码)是怎么算出来的?

身份证的最后一位是根据前17位数字计算出来的检验码。计算方法是:将身份证号码前17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8...
  • u011200125
  • u011200125
  • 2015-05-14 14:15:44
  • 2320

编写函数,实现对身份证号码最后一位的验证

二代身份证号码为18位,其最后一位(第18位)的计算方法为: 1、 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为: 7-9-10-5-8-4-2-1-6-3-7-...
  • u012396955
  • u012396955
  • 2016-12-29 16:56:03
  • 453

身份证号输入验证js代码 支持输入"x"大小写 现已解决一些身份证号不兼容问题

身份证号输入验证js代码 支持输入"x"大小写 现已解决一些身份证号不兼容问题...
  • u010430099
  • u010430099
  • 2015-05-05 10:21:19
  • 458

18位身份证号编码规则&最后一位

例如某18位身份证号
  • yeruby
  • yeruby
  • 2014-08-09 18:24:48
  • 4712

用Excel生成身份证的最后一位校验码

  • 2011年03月15日 16:06
  • 28KB
  • 下载

身份证号码合法性判断

问题描述:  我国公民的身份证号码特点如下: 1、长度为18位; 2、第1~17位只能为数字; 3、第18位可以是数字或者小写英文字母x。 4、身份证号码的第7~14位表示持有人生日的年、月...
  • hs794502825
  • hs794502825
  • 2014-07-22 21:27:49
  • 5014

由前17位身份证号计算最后一位

  • 2013年05月27日 21:38
  • 500KB
  • 下载

检验身份证号码真伪算法

import java.util.Scanner;/*检验身份证号码真伪算法:17位加权因子:7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 检...
  • sz457763638
  • sz457763638
  • 2015-03-23 11:11:26
  • 412

用Excel生成身份证的最后一位校验码(公开算法不加密)

  • 2012年09月18日 22:44
  • 24KB
  • 下载
收藏助手
不良信息举报
您举报文章:js根据身份证最后一位判断身份证号的真假
举报原因:
原因补充:

(最多只允许输入30个字)