JavaScript验证18位身份证号码最后一位正确性的实现代码
根据身份证号码推算出最后一位的正确性,如果不正确还会给出正确结果,非常有意思的一断程序。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>javascript18位身份证号码最后一位校验码</title>
</head>
<body>
<script>
functiongetIDChar18(id){
vararr=id.split(''),sum=0,vc=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
for(vari=0;i<17;i++)sum+=vc[i]*parseInt(arr[i]);
return['1','0','X','9','8','7','6','5','4','3','2'][sum%11];
}
functionValidID(id){
if(/^\d{18}$/.test(id)){
varc=id.charAt(17),rc=getIDChar18(id);
if(c==rc)showRst('您输入的18位身份证号码正确!<br>生日:'+id.substr(6,8)+'<br>性别:'+['女','男'][parseInt(id.charAt(16))%2]);
elseshowRst('您输入的18位身份证号码检验码错误,18位校验码应该为'+rc+'!');
}
elseshowRst('请输入18位数字的身份证号码!');
}
functionshowRst(msg){document.getElementById('rst').innerHTML=msg}
</script>
<inputtype="text"onblur="ValidID(this.value)"/>
<divid="rst"></div>
</body>
</html>