js身份证判断方法支持15位和18位

前端技术 2023/09/05 JavaScript
复制代码 代码如下:

//HTML页面上要有一个id为identity_card的input输入框,一个id为ipmessage的身份证错误或正确时提示消息的地方
<script>
//身份证验证
$(document).ready(function(){
$(\"#identity_card\").change(function(){
var idcard =$(this).val();
checkDate(idcard );
});
});
//身份证
function checkDate( idcard ){
var socialNo = idcard;
if(socialNo == \"\")
{
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"输入身份证号码不能为空!\");
return (false);
}
if (socialNo.length != 15 && socialNo.length != 18)
{
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"输入身份证号码格式不正确!\");
return (false);
}
var area={11:\"北京\",12:\"天津\",13:\"河北\",14:\"山西\",15:\"内蒙古\",21:\"辽宁\",22:\"吉林\",23:\"黑龙江\",31:\"上海\",32:\"江苏\",33:\"浙江\",34:\"安徽\",35:\"福建\",36:\"江西\",37:\"山东\",41:\"河南\",42:\"湖北\",43:\"湖南\",44:\"广东\",45:\"广西\",46:\"海南\",50:\"重庆\",51:\"四川\",52:\"贵州\",53:\"云南\",54:\"西藏\",61:\"陕西\",62:\"甘肃\",63:\"青海\",64:\"宁夏\",65:\"新疆\",71:\"台湾\",81:\"香港\",82:\"澳门\",91:\"国外\"};
if(area[parseInt(socialNo.substr(0,2))]==null) {
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"身份证号码不正确(地区非法)!\");
return (false);
}
if (socialNo.length == 15)
{
pattern= /^\\d{15}$/;
if (pattern.exec(socialNo)==null){
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"15位身份证号码必须为数字!\");
return (false);
}
var birth = parseInt(\"19\" + socialNo.substr(6,2));
var month = socialNo.substr(8,2);
var day = parseInt(socialNo.substr(10,2));
switch(month) {
case \'01\':
case \'03\':
case \'05\':
case \'07\':
case \'08\':
case \'10\':
case \'12\':
if(day>31) {
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\'输入身份证号码不格式正确!\');
return false;
}
break;
case \'04\':
case \'06\':
case \'09\':
case \'11\':
if(day>30) {
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\'输入身份证号码不格式正确!\');
return false;
}
break;
case \'02\':
if((birth % 4 == 0 && birth % 100 != 0) || birth % 400 == 0) {
if(day>29) {
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\'输入身份证号码不格式正确!\');
return false;
}
} else {
if(day>28) {
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\'输入身份证号码不格式正确!\');
return false;
}
}
break;
default:
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\'输入身份证号码不格式正确!\');
return false;
}
var nowYear = new Date().getYear();
if(nowYear - parseInt(birth)<15 || nowYear - parseInt(birth)>100) {
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\'输入身份证号码不格式正确!\');
return false;
}
$(\'#ipmessage\').html(\'通过!\');
return (true);
}
var Wi = new Array(
7,9,10,5,8,4,2,1,6,
3,7,9,10,5,8,4,2,1
);
var lSum = 0;
var nNum = 0;
var nCheckSum = 0;
for (i = 0; i < 17; ++i)
{
if ( socialNo.charAt(i) < \'0\' || socialNo.charAt(i) > \'9\' )
{
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"输入身份证号码格式不正确!\");
return (false);
}
else
{
nNum = socialNo.charAt(i) - \'0\';
}
lSum += nNum * Wi[i];
}
if( socialNo.charAt(17) == \'X\' || socialNo.charAt(17) == \'x\')
{
lSum += 10*Wi[17];
}
else if ( socialNo.charAt(17) < \'0\' || socialNo.charAt(17) > \'9\' )
{
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"输入身份证号码格式不正确!\");
return (false);
}
else
{
lSum += ( socialNo.charAt(17) - \'0\' ) * Wi[17];
}
if ( (lSum % 11) == 1 )
{
$(\'#ipmessage\').html(\'通过!\');
return true;
}
else
{
$(\'#ipmessage\').html(\'输入身份证号码格式不正确,必须是15位到18位的身份证号\');
alert(\"输入身份证号码格式不正确!\");
return (false);
}
}
</script>

本文地址:https://www.stayed.cn/item/12791

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。