js验证身份证号有效性并提示对应信息

 更新时间:2015年10月21日 21:47  点击:2426

直接上代码,逐行对代码进行研究,一定会有所收获。

function nunber(allowancePersonValue){  if(allowancePersonValue=="身份证号"){  $("#span_username").show();  $("#span_username").html("身份证号不能为空");  return false;  }  //校验长度,类型  else if(isCardNo(allowancePersonValue) === false)  { $("#span_username").show();  $("#span_username").html("您输入的身份证号码不正确,请重新输入");  return false;  }  //检查省份  else if(checkProvince(allowancePersonValue) === false)  {  $("#span_username").show();  $("#span_username").html("您输入的身份证号码不正确,请重新输入");  return false;  }  //校验生日  else if(checkBirthday(allowancePersonValue) === false)  {  $("#span_username").show();  $("#span_username").html("您输入的身份证号码生日不正确,请重新输入");  return false;  }  //检验位的检测  else if(checkParity(allowancePersonValue) === false)  {  $("#span_username").show();  $("#span_username").html("您的身份证校验位不正确,请重新输入");  return false;  }else{  $("#span_username").hide();  return true;  }  }  //身份证省的编码 var vcity={ 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:"国外"     };  //检查号码是否符合规范,包括长度,类型 function isCardNo(card){  //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X  var reg = /(^/d{15}$)|(^/d{17}(/d|X)$)/;  if(reg.test(card) === false){  //alert("demo");  return false;  }  return true; }  //取身份证前两位,校验省份 function checkProvince(card){  var province = card.substr(0,2);  if(vcity[province] == undefined){  return false;  }  return true; }  //检查生日是否正确 function checkBirthday(card){  var len = card.length;  //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字  if(len == '15'){    var re_fifteen = /^(/d{6})(/d{2})(/d{2})(/d{2})(/d{3})$/;    var arr_data = card.match(re_fifteen);    var year = arr_data[2];    var month = arr_data[3];    var day = arr_data[4];    var birthday = new Date('19'+year+'/'+month+'/'+day);    return verifyBirthday('19'+year,month,day,birthday);  }  //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X  if(len == '18'){    var re_eighteen = /^(/d{6})(/d{4})(/d{2})(/d{2})(/d{3})([0-9]|X)$/;    var arr_data = card.match(re_eighteen);    var year = arr_data[2];    var month = arr_data[3];    var day = arr_data[4];    var birthday = new Date(year+'/'+month+'/'+day);    return verifyBirthday(year,month,day,birthday);  }  return false; }  //校验日期 function verifyBirthday(year,month,day,birthday){  var now = new Date();  var now_year = now.getFullYear();  //年月日是否合理  if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)  {    //判断年份的范围(3岁到100岁之间)    var time = now_year - year;    if(time >= 3 && time <= 100)    {      return true;    }    return false;  }  return false; }  //校验位的检测 function checkParity(card){  //15位转18位  card = changeFivteenToEighteen(card);  var len = card.length;  if(len == '18'){    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');    var cardTemp = 0, i, valnum;    for(i = 0; i < 17; i ++)    {      cardTemp += card.substr(i, 1) * arrInt[i];    }    valnum = arrCh[cardTemp % 11];    if (valnum == card.substr(17, 1))    {      return true;    }    return false;  }  return false; }  //15位转18位身份证号 function changeFivteenToEighteen(card){  if(card.length == '15')  {    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');    var cardTemp = 0, i;     card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);    for(i = 0; i < 17; i ++)    {      cardTemp += card.substr(i, 1) * arrInt[i];    }    card += arrCh[cardTemp % 11];    return card;  }  return card; } 

使用方法:

<input type="text" class="reg_txt" value="身份证号" titles="请输入您的身份证号!" name="userid" id="username" maxlength="40" onfocus="if(this.value=='身份证号'){this.value='';}" onblur="if(this.value==''){this.value='身份证号';}nunber(this.value);" style="border: 1px solid red;"><br> <span class="c_red" id="span_username"></span> 

希望本文对大家学习javascript程序设计有所帮助。

[!--infotagslink--]

相关文章

  • php身份证校验码的计算例子

    下面来给各位同学介绍一个php身份证校验码的计算例子,希望本函数代码能帮助到各位同学哦。 例子 代码如下 复制代码 public function id_ver...2016-11-25
  • phpexcel导出数据身份证后四位0000解决办法

    在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
  • Django def clean()函数对表单中的数据进行验证操作

    这篇文章主要介绍了Django def clean()函数对表单中的数据进行验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-09
  • Nest.js 授权验证的方法示例

    这篇文章主要介绍了Nest.js 授权验证的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • el-table树形表格表单验证(列表生成序号)

    这篇文章主要介绍了el-table树形表格表单验证(列表生成序号),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-01
  • selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

    这篇文章主要介绍了selenium 反爬虫之跳过淘宝滑块验证功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-27
  • JavaScript实现密码框输入验证

    这篇文章主要为大家详细介绍了JavaScript实现密码框输入验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-01
  • vue实现表单验证小功能

    这篇文章主要为大家详细介绍了vue实现表单验证小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-29
  • js canvas实现滑块验证

    这篇文章主要为大家详细介绍了js canvas实现滑块验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • vue element table中自定义一些input的验证操作

    这篇文章主要介绍了vue element table中自定义一些input的验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-18
  • JavaScript表单验证示例详解

    这篇文章主要为大家详细介绍了JavaScript表单验证示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-04
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
  • bootstrapValidator自定验证方法写法

    这篇文章主要为大家详细介绍了bootstrapValidator自定验证方法写法,研究bootstrapValidator验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • layui 正则表达式验证使用实例详解

    layui的正则表达式是在form表单中完成的,这篇文章主要介绍了layui 正则表达式验证使用教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • jQuery实现表单验证功能

    这篇文章主要为大家详细介绍了jQuery实现表单验证功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-21
  • AngularJS中实现用户访问的身份认证和表单验证功能

    这篇文章主要介绍了AngularJS中实现用户访问的身份认证及表单验证功能的方法,Angular是Google开发的一款浏览器端的高人气JavaScript框架,需要的朋友可以参考下...2016-04-23
  • javascript数据类型验证方法

    这篇文章主要为大家分享了一个简单的javascript数据类型验证方法,感兴趣的小伙伴们可以参考一下...2016-01-05
  • 浅析Bootstrap验证控件的使用

    这篇文章主要介绍了浅析Bootstrap验证控件的使用 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下...2016-06-24
  • 正则表达式进行页面表单验证功能

    本文介绍了正则表达式进行页面表单验证功能的教程,非常实用,有兴趣的同学快来看看吧 一般做到注册页面的时候,当用户填完信息,都需要对他们的信息进行验证,这就要用到...2017-07-06
  • JavaScript+html实现前端页面滑动验证

    这篇文章主要为大家详细介绍了JavaScript+html实现前端页面滑动验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-06