广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    JS验证身份证号的有效性并提示相应信息

    2018-04-06 10:41:51 次阅读 稿源:互联网
    零七广告
    1. function nunber(allowancePersonValue){ 
    2.  if(allowancePersonValue=="身份证号"){ 
    3.   $("#span_username").show(); 
    4.   $("#span_username").html("身份证号不能为空"); 
    5.   return false
    6.  } 
    7.  //校验长度,类型 
    8.  else if(isCardNo(allowancePersonValue) === false
    9.  { 
    10. $("#span_username").show(); 
    11.   $("#span_username").html("您输入的身份证号码不正确,请重新输入"); 
    12.   return false
    13.  } 
    14.  //检查省份 
    15.  else if(checkProvince(allowancePersonValue) === false
    16.  { 
    17.   $("#span_username").show(); 
    18.   $("#span_username").html("您输入的身份证号码不正确,请重新输入"); 
    19.   return false
    20.  } 
    21.  //校验生日 
    22.  else if(checkBirthday(allowancePersonValue) === false
    23.  { 
    24.   $("#span_username").show(); 
    25.   $("#span_username").html("您输入的身份证号码生日不正确,请重新输入"); 
    26.   return false
    27.  } 
    28.  //检验位的检测 
    29.  else if(checkParity(allowancePersonValue) === false
    30.  { 
    31.   $("#span_username").show(); 
    32.   $("#span_username").html("您的身份证校验位不正确,请重新输入"); 
    33.   return false
    34.  }else
    35.   $("#span_username").hide(); 
    36.   return true
    37.  } 
    38.  
    39.  
    40. //身份证省的编码 
    41. var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古"
    42.         21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏"
    43.         33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南"
    44.         42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆"
    45.         51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃"
    46.         63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外" 
    47.        }; 
    48.  
    49. //检查号码是否符合规范,包括长度,类型 
    50. function isCardNo(card){ 
    51.  //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X 
    52.  var reg = /(^/d{15}$)|(^/d{17}(/d|X)$)/; 
    53.  if(reg.test(card) === false){ 
    54.   //alert("demo"); 
    55.   return false
    56.  } 
    57.  return true
    58.  
    59. //取身份证前两位,校验省份 
    60. function checkProvince(card){ 
    61.  var province = card.substr(0,2); 
    62.  if(vcity[province] == undefined){ 
    63.   return false
    64.  } 
    65.  return true
    66.  
    67. //检查生日是否正确 
    68. function checkBirthday(card){ 
    69.  var len = card.length; 
    70.  //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 
    71.  if(len == '15'){  
    72.      var re_fifteen = /^(/d{6})(/d{2})(/d{2})(/d{2})(/d{3})$/; 
    73.      var arr_data = card.match(re_fifteen); 
    74.      var year = arr_data[2]; 
    75.      var month = arr_data[3]; 
    76.      var day = arr_data[4]; 
    77.      var birthday = new Date('19'+year+'/'+month+'/'+day); 
    78.      return verifyBirthday('19'+year,month,day,birthday); 
    79.  } 
    80.  //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X 
    81.  if(len == '18'){ 
    82.      var re_eighteen = /^(/d{6})(/d{4})(/d{2})(/d{2})(/d{3})([0-9]|X)$/; 
    83.      var arr_data = card.match(re_eighteen); 
    84.      var year = arr_data[2]; 
    85.      var month = arr_data[3]; 
    86.      var day = arr_data[4]; 
    87.      var birthday = new Date(year+'/'+month+'/'+day); 
    88.      return verifyBirthday(year,month,day,birthday); 
    89.  } 
    90.  return false
    91.  
    92. //校验日期 
    93. function verifyBirthday(year,month,day,birthday){ 
    94.  var now = new Date(); 
    95.  var now_year = now.getFullYear(); 
    96.  //年月日是否合理 
    97.  if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) 
    98.  { 
    99.      //判断年份的范围(3岁到100岁之间) 
    100.      var time = now_year - year; 
    101.      if(time >= 3 && time <= 100) 
    102.      { 
    103.          return true
    104.      } 
    105.      return false
    106.  } 
    107.  return false
    108.  
    109. //校验位的检测 
    110. function checkParity(card){ 
    111.  //15位转18位 
    112.  card = changeFivteenToEighteen(card); 
    113.  var len = card.length; 
    114.  if(len == '18'){ 
    115.      var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
    116.      var arrCh = new Array('1''0''X''9''8''7''6''5''4''3''2'); 
    117.      var cardTemp = 0, i, valnum; 
    118.      for(i = 0; i < 17; i ++) 
    119.      { 
    120.          cardTemp += card.substr(i, 1) * arrInt[i]; 
    121.      } 
    122.      valnum = arrCh[cardTemp % 11]; 
    123.      if (valnum == card.substr(17, 1)) 
    124.      { 
    125.          return true
    126.      } 
    127.      return false
    128.  } 
    129.  return false
    130.  
    131. //15位转18位身份证号 
    132. function changeFivteenToEighteen(card){ 
    133.  if(card.length == '15'
    134.  { 
    135.      var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
    136.      var arrCh = new Array('1''0''X''9''8''7''6''5''4''3''2'); 
    137.      var cardTemp = 0, i;   
    138.      card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6); 
    139.      for(i = 0; i < 17; i ++) 
    140.      { 
    141.          cardTemp += card.substr(i, 1) * arrInt[i]; 
    142.      } 
    143.      card += arrCh[cardTemp % 11]; 
    144.      return card; 
    145.  } 
    146.  return card; 

    使用方法:

    1. <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> 
    2. <span class="c_red" id="span_username"></span> 

    效果为输入身份证号,焦掉移开后自动验证,并返回信息!

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告