国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript實現驗證身份證號的有效性并提示

2024-05-06 16:19:05
字體:
來源:轉載
供稿:網友

下面分享的JS腳本是我用過的最完善的身份證號的驗證程序了,因為只有真正的身份證號才能被通過,小伙伴們可以試試。直接復制運行。

javascript實現驗證身份證號的有效性并提示

 

 
  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. //身份證省的編碼  
  42. var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",  
  43. 21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",  
  44. 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",  
  45. 42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",  
  46. 51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",  
  47. 63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外" 
  48. };  
  49.  
  50. //檢查號碼是否符合規范,包括長度,類型  
  51. function isCardNo(card){  
  52. //身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最后一位是校驗位,可能為數字或字符X  
  53. var reg = /(^/d{15}$)|(^/d{17}(/d|X)$)/;  
  54. if(reg.test(card) === false){  
  55. //alert("demo");  
  56. return false;  
  57. }  
  58. return true;  
  59. }  
  60.  
  61. //取身份證前兩位,校驗省份  
  62. function checkProvince(card){  
  63. var province = card.substr(0,2);  
  64. if(vcity[province] == undefined){  
  65. return false;  
  66. }  
  67. return true;  
  68. }  
  69.  
  70. //檢查生日是否正確  
  71. function checkBirthday(card){  
  72. var len = card.length;  
  73. //身份證15位時,次序為省(3位)市(3位)年(2位)月(2位)日(2位)校驗位(3位),皆為數字  
  74. if(len == '15'){  
  75. var re_fifteen = /^(/d{6})(/d{2})(/d{2})(/d{2})(/d{3})$/;  
  76. var arr_data = card.match(re_fifteen);  
  77. var year = arr_data[2];  
  78. var month = arr_data[3];  
  79. var day = arr_data[4];  
  80. var birthday = new Date('19'+year+'/'+month+'/'+day);  
  81. return verifyBirthday('19'+year,month,day,birthday);  
  82. }  
  83. //身份證18位時,次序為省(3位)市(3位)年(4位)月(2位)日(2位)校驗位(4位),校驗位末尾可能為X  
  84. if(len == '18'){  
  85. var re_eighteen = /^(/d{6})(/d{4})(/d{2})(/d{2})(/d{3})([0-9]|X)$/;  
  86. var arr_data = card.match(re_eighteen);  
  87. var year = arr_data[2];  
  88. var month = arr_data[3];  
  89. var day = arr_data[4];  
  90. var birthday = new Date(year+'/'+month+'/'+day);  
  91. return verifyBirthday(year,month,day,birthday);  
  92. }  
  93. return false;  
  94. }  
  95.  
  96. //校驗日期  
  97. function verifyBirthday(year,month,day,birthday){  
  98. var now = new Date();  
  99. var now_year = now.getFullYear();  
  100. //年月日是否合理  
  101. if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)  
  102. {  
  103. //判斷年份的范圍(3歲到100歲之間)  
  104. var time = now_year - year;  
  105. if(time >= 3 && time <= 100)  
  106. {  
  107. return true;  
  108. }  
  109. return false;  
  110. }  
  111. return false;  
  112. }  
  113.  
  114. //校驗位的檢測  
  115. function checkParity(card){  
  116. //15位轉18位  
  117. card = changeFivteenToEighteen(card);  
  118. var len = card.length;  
  119. if(len == '18'){  
  120. var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
  121. var arrCh = new Array('1''0''X''9''8''7''6''5''4''3''2');  
  122. var cardTemp = 0, i, valnum;  
  123. for(i = 0; i < 17; i ++)  
  124. {  
  125. cardTemp += card.substr(i, 1) * arrInt[i];  
  126. }  
  127. valnum = arrCh[cardTemp % 11];  
  128. if (valnum == card.substr(17, 1))  
  129. {  
  130. return true;  
  131. }  
  132. return false;  
  133. }  
  134. return false;  
  135. }  
  136.  
  137. //15位轉18位身份證號  
  138. function changeFivteenToEighteen(card){  
  139. if(card.length == '15')  
  140. {  
  141. var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
  142. var arrCh = new Array('1''0''X''9''8''7''6''5''4''3''2');  
  143. var cardTemp = 0, i;  
  144. card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);  
  145. for(i = 0; i < 17; i ++)  
  146. {  
  147. cardTemp += card.substr(i, 1) * arrInt[i];  
  148. }  
  149. card += arrCh[cardTemp % 11];  
  150. return card;  
  151. }  
  152. return card;  
  153. }  

使用方法:

 

 
  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>  

效果為輸入身份證號,焦掉移開后自動驗證,并返回信息!

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 永定县| 临洮县| 渭南市| 静海县| 枝江市| 桦川县| 满城县| 长寿区| 涿州市| 易门县| 河津市| 依安县| 凤山县| 涪陵区| 莱州市| 云和县| 吕梁市| 佳木斯市| 当涂县| 体育| 新安县| 辽宁省| 铜川市| 依安县| 衡东县| 绿春县| 吴桥县| 万载县| 泌阳县| 河池市| 茂名市| 宁强县| 天全县| 纳雍县| 桂林市| 建平县| 洛川县| 礼泉县| 景洪市| 叙永县| 马尔康县|