身份证算法 JavaScript实现 v1.01

来源:互联网 发布:小米usb网络共享怎么用 编辑:程序博客网 时间:2024/06/03 18:18

1.将下面代码复制到记事本中,保存文件名为 *.html

2.使用浏览器打开就可以使用了。


更新内容

1.增加计算前17位任意一位转18位身份证


<html>

<head>

<title>JavaScript</title>

</head>

<body>

请输入身份证号码:<br>

<input type="text" name="card"><br>

<input type="button" value="验证18位身份证" onclick="submit1();">

<input type="button" value="前17位计算最后一位转18位身份证" onclick="submit2();">

<input type="button" value="预留按钮" onclick="submit0();">

<hr>

请输入需要计算的位置:(范围[1,17])<br>

<input type="text" name="position"><br>

<input type="button" value="计算前17位任意一位转18位身份证" onclick="submit3();">

<br><br>身份证号验证脚本 作者:xzlAwin 版本号:v1.01<br>

<script type="text/javascript">

function submit0()

{

alert('预留的按钮未实现功能!');

}

function submit1()

{

var card = document.getElementsByName('card')[0].value;

//alert(card);

//coefficient 加权系数

var coefficient=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];

//validate 验证码

var validate = [1,0,'X',9,8,7,6,5,4,3,2];

card = card.split('');

if(card.length == 18)

{

var sum = 0;

for(var i=0;i<card.length-1;i++)

{

sum += parseInt(card[i])*parseInt(coefficient[i]);

//alert(parseInt(coefficient[i]));

}

if(card[17] == validate[sum%11])

{

alert('身份证号码正确!');

}else

{

alert('身份证号码错误!');

}

//alert(validate[sum%11]);

}else

{

alert('输入位数错误:要求输入18位数字,您输入了'+card.length+'位数!');

}

}

function submit2()

{

var card = document.getElementsByName('card')[0].value;

//alert(card);

//coefficient 加权系数

var coefficient=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];

//validate 验证码

var validate = [1,0,'X',9,8,7,6,5,4,3,2];

card = card.split('');

if(card.length == 17)

{

var sum = 0;

for(var i=0;i<card.length;i++)

{

sum += parseInt(card[i])*parseInt(coefficient[i]);

//alert(parseInt(coefficient[i]));

}

alert('最后一位验证码是:'+validate[sum%11]+'\n'

+'完整的身份证号是:'+card.join('')+validate[sum%11]);

}else

{

alert('输入位数错误:要求输入17位数字,您输入了'+card.length+'位数!');

}

}

function submit3()

{

var card = document.getElementsByName('card')[0].value;

var position = document.getElementsByName('position')[0].value;

//alert(card);

//coefficient 加权系数

var coefficient=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];

//validate 验证码

var validate = [1,0,'X',9,8,7,6,5,4,3,2];

card = card.split('');

if(position>0 && position<18)

{

if(card.length == 17)

{

card.splice(position-1,0,0);

for(var j=0;j<10;j++)

{

var sum = 0;

card.splice(position-1,1,j);

//alert(card);

for(var i=0;i<card.length-1;i++)

{

sum += parseInt(card[i])*parseInt(coefficient[i]);

//alert(parseInt(coefficient[i]));

}

if(validate[sum%11] == card[17])

{

//输入格式控制

if(position > 0 && position < 10)

{

alert('身份证号第 '+position+'位是:'+j+'\n'

+'完整的身份证号是:'+card.join(''));

}else if(position > 9 && position < 18)

{

alert('身份证号第'+position+'位是:'+j+'\n'

+'完整的身份证号是:'+card.join(''));

}

break;

}

}

}else

{

alert('输入位数错误:要求输入17位数字,您输入了'+card.length+'位数!');

}

}else

{

alert('输入范围错误:要求输入范围[1,17],您输入了'+position+'!');

}

}

</script>

</body>

</html>


0 0
原创粉丝点击