亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

jquery插件validation實現驗證身份證號等

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

這篇文章主要介紹了jquery插件validation實現驗證身份證號、護照、電話號碼、email十分的簡單實用,有需要的小伙伴可以參考下。

先推薦一個基于bootstrap的jQuery validation插件:http://thrilleratplay.github.io/jquery-validation-bootstrap-tooltip/

jQuery validation添加驗證規則

validata.html

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5. <!-- TemplateBeginEditable name="doctitle" --> 
  6. <title>無標題文檔</title> 
  7. <script src="lib/jquery.js" type="text/javascript"></script> 
  8. <script src="lib/jquery.validate.js" type="text/javascript"></script> 
  9. <script src="lib/card.js" type="text/javascript"></script> 
  10. <script src="lib/validata.js" type="text/javascript"></script> 
  11. <style type="text/css"
  12. em.success{ 
  13. background:url("images/tips_arrow.gif") no-repeat left 0px; 
  14. padding-left:16px; 
  15. margin-left:2px; 
  16. em.error{ 
  17. background:url("images/tips_arrow.gif") no-repeat left -51px; 
  18. display:inline; 
  19. padding-left:10px; 
  20. font-style:normal; 
  21. font-size:11px; 
  22. margin-left:2px; 
  23. font-family:12px/162% Arial, Helvetica, sans-serif; 
  24.  
  25. </style> 
  26.  
  27. </head> 
  28.  
  29. <body> 
  30. <form class="cmsform" id="commentForm" method="get" action=""
  31. <p> 
  32. <label for="cusername">姓名</label><em>*</em> 
  33. <input id="cusername" name="username" size="25" /> 
  34.  
  35. </p> 
  36. <p> 
  37. <label for="cemail">電子郵件</label><em>*</em> 
  38. <input id="cemail" name="email" size="25" /> 
  39.  
  40. </p> 
  41. <p> 
  42. <label for="card">身份證號</label><em>*</em> 
  43. <input id="card" name="card" size="25"/> 
  44.  
  45. </p> 
  46. <p> 
  47. <label for="passport">護照編號</label><em>*</em> 
  48. <input id="passport" name="passport" size="25"/> 
  49.  
  50. </p> 
  51. <p> 
  52. <label for="phone">電話號碼</label><em>*</em> 
  53. <input id="phone" name="phone" size="25" /> 
  54.  
  55. </p> 
  56. </form> 
  57. </body> 
  58. </html> 

validata.js

 

 
  1. $(function(){ 
  2.  
  3. $.validator.setDefaults({ 
  4. submitHandler: function(form) { 
  5. form.submit(); 
  6. }); 
  7. // 字符驗證 
  8. jQuery.validator.addMethod("stringCheck"function(value, element) { 
  9. return this.optional(element) || /^[/u0391-/uFFE5/w]+$/.test(value); 
  10. }, "只能包括中文字、英文字母、數字和下劃線"); 
  11. // 中文字兩個字節 
  12. jQuery.validator.addMethod("byteRangeLength"function(value, element, param) { 
  13. var length = value.length; 
  14. for(var i = 0; i < value.length; i++){ 
  15. if(value.charCodeAt(i) > 127){ 
  16. length++; 
  17. return this.optional(element) || ( length >= param[0] && length <= param[1] ); 
  18. }, "請確保輸入的值在3-15個字節之間(一個中文字算2個字節)"); 
  19.  
  20. // 身份證號碼驗證 
  21. jQuery.validator.addMethod("isIdCardNo"function(value, element) { 
  22. return this.optional(element) || idCardNoUtil.checkIdCardNo(value); 
  23. }, "請正確輸入您的身份證號碼"); 
  24. //護照編號驗證 
  25. jQuery.validator.addMethod("passport"function(value, element) { 
  26. return this.optional(element) || checknumber(value); 
  27. }, "請正確輸入您的護照編號"); 
  28.  
  29. // 手機號碼驗證 
  30. jQuery.validator.addMethod("isMobile"function(value, element) { 
  31. var length = value.length; 
  32. var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+/d{8})$/; 
  33. return this.optional(element) || (length == 11 && mobile.test(value)); 
  34. }, "請正確填寫您的手機號碼"); 
  35.  
  36. // 電話號碼驗證 
  37. jQuery.validator.addMethod("isTel"function(value, element) { 
  38. var tel = /^/d{3,4}-?/d{7,9}$/; //電話號碼格式010-12345678 
  39. return this.optional(element) || (tel.test(value)); 
  40. }, "請正確填寫您的電話號碼"); 
  41.  
  42. // 聯系電話(手機/電話皆可)驗證 
  43. jQuery.validator.addMethod("isPhone"function(value,element) { 
  44. var length = value.length; 
  45. var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+/d{8})$/; 
  46. var tel = /^/d{3,4}-?/d{7,9}$/; 
  47. return this.optional(element) || (tel.test(value) || mobile.test(value)); 
  48.  
  49. }, "請正確填寫您的聯系電話"); 
  50.  
  51. // 郵政編碼驗證 
  52. jQuery.validator.addMethod("isZipCode"function(value, element) { 
  53. var tel = /^[0-9]{6}$/; 
  54. return this.optional(element) || (tel.test(value)); 
  55. }, "請正確填寫您的郵政編碼"); 
  56.  
  57. //開始驗證 
  58. $('#commentForm').validate({ 
  59.  
  60. rules: { 
  61. username: { 
  62. required:true
  63. stringCheck:true
  64. byteRangeLength:[3,15] 
  65. }, 
  66. email:{ 
  67. required:true
  68. email:true 
  69. }, 
  70. phone:{ 
  71. required:true
  72. isMobile:true 
  73. }, 
  74. address:{ 
  75. required:true
  76. stringCheck:true
  77. byteRangeLength:[3,100] 
  78. }, 
  79. card:{ 
  80. required:true
  81. isIdCardNo:true 
  82.  
  83. }, 
  84. passport:{ 
  85. required:true
  86. passport:true 
  87.  
  88. }, 
  89.  
  90.  
  91. messages:{ 
  92. username: { 
  93. required: "請填寫用戶名"
  94. stringCheck: "用戶名只能包括中文字、英文字母、數字和下劃線"
  95. byteRangeLength: "用戶名必須在3-15個字符之間(一個中文字算2個字符)" 
  96. }, 
  97. email:{ 
  98. required: "<font color=red>請輸入一個Email地址</fond>"
  99. email: "請輸入一個有效的Email地址" 
  100. }, 
  101. phone:{ 
  102. required: "請輸入您的聯系電話"
  103. isPhone: "請輸入一個有效的聯系電話" 
  104. }, 
  105. address:{ 
  106. required: "請輸入您的聯系地址"
  107. stringCheck: "請正確輸入您的聯系地址"
  108. byteRangeLength: "請詳實您的聯系地址以便于我們聯系您" 
  109. }, 
  110. card:{ 
  111. required:"請輸入身份證號"
  112. isIdCardNo:"請輸入正確的身份證號" 
  113. }, 
  114. passport:{ 
  115. required:"請輸入護照編號"
  116. passport:"請輸入正確的護照編號" 
  117. }, 
  118.  
  119. focusInvalid: false
  120. onkeyup: false
  121. errorPlacement: function(error, element) { 
  122. error.appendTo( element.parent()); 
  123. }, 
  124. errorElement:"em"
  125. error:function(label){label.text(" ").addClass("error");} 
  126. }); 
  127. }) 

card.js

 

 
  1. var idCardNoUtil = { 
  2.  
  3. provinceAndCitys: {11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江"
  4. 31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東"
  5. 45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏"
  6. 65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"}, 
  7. powers: ["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"], 
  8. parityBit: ["1","0","X","9","8","7","6","5","4","3","2"], 
  9. genders: {male:"男",female:"女"}, 
  10. checkAddressCode: function(addressCode){ 
  11. var check = /^[1-9]/d{5}$/.test(addressCode); 
  12. if(!check) return false
  13. if(idCardNoUtil.provinceAndCitys[parseInt(addressCode.substring(0,2))]){ 
  14. return true
  15. }else
  16. return false
  17. }, 
  18. checkBirthDayCode: function(birDayCode){ 
  19. var check = /^[1-9]/d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode); 
  20. if(!check) return false
  21. var yyyy = parseInt(birDayCode.substring(0,4),10); 
  22. var mm = parseInt(birDayCode.substring(4,6),10); 
  23. var dd = parseInt(birDayCode.substring(6),10); 
  24. var xdata = new Date(yyyy,mm-1,dd); 
  25. if(xdata > new Date()){ 
  26. return false;//生日不能大于當前日期 
  27. }else if ( ( xdata.getFullYear() == yyyy ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == dd ) ){ 
  28. return true
  29. }else
  30. return false
  31. }, 
  32. getParityBit: function(idCardNo){ 
  33. var id17 = idCardNo.substring(0,17); 
  34.  
  35. var power = 0; 
  36. for(var i=0;i<17;i++){ 
  37. power += parseInt(id17.charAt(i),10) * parseInt(idCardNoUtil.powers[i]); 
  38.  
  39. var mod = power % 11; 
  40. return idCardNoUtil.parityBit[mod]; 
  41. }, 
  42. checkParityBit: function(idCardNo){ 
  43. var parityBit = idCardNo.charAt(17).toUpperCase(); 
  44. if(idCardNoUtil.getParityBit(idCardNo) == parityBit){ 
  45. return true
  46. }else
  47. return false
  48. }, 
  49. checkIdCardNo: function(idCardNo){ 
  50. //15位和18位身份證號碼的基本校驗 
  51. var check = /^/d{15}|(/d{17}(/d|x|X))$/.test(idCardNo); 
  52. if(!check) return false
  53. //判斷長度為15位或18位 
  54. if(idCardNo.length==15){ 
  55. return idCardNoUtil.check15IdCardNo(idCardNo); 
  56. }else if(idCardNo.length==18){ 
  57. return idCardNoUtil.check18IdCardNo(idCardNo); 
  58. }else
  59. return false
  60. }, 
  61.  
  62. //校驗15位的身份證號碼 
  63. check15IdCardNo: function(idCardNo){ 
  64. //15位身份證號碼的基本校驗 
  65. var check = /^[1-9]/d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))/d{3}$/.test(idCardNo); 
  66. if(!check) return false
  67. //校驗地址碼 
  68. var addressCode = idCardNo.substring(0,6); 
  69. check = idCardNoUtil.checkAddressCode(addressCode); 
  70. if(!check) return false
  71. var birDayCode = '19' + idCardNo.substring(6,12); 
  72. //校驗日期碼 
  73. return idCardNoUtil.checkBirthDayCode(birDayCode); 
  74. }, 
  75.  
  76. //校驗18位的身份證號碼 
  77. check18IdCardNo: function(idCardNo){ 
  78. //18位身份證號碼的基本格式校驗 
  79. var check = /^[1-9]/d{5}[1-9]/d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))/d{3}(/d|x|X)$/.test(idCardNo); 
  80. if(!check) return false
  81. //校驗地址碼 
  82. var addressCode = idCardNo.substring(0,6); 
  83. check = idCardNoUtil.checkAddressCode(addressCode); 
  84. if(!check) return false
  85. //校驗日期碼 
  86. var birDayCode = idCardNo.substring(6,14); 
  87. check = idCardNoUtil.checkBirthDayCode(birDayCode); 
  88. if(!check) return false
  89. //驗證校檢碼 
  90. return idCardNoUtil.checkParityBit(idCardNo); 
  91. }, 
  92.  
  93. formateDateCN: function(day){ 
  94. var yyyy =day.substring(0,4); 
  95. var mm = day.substring(4,6); 
  96. var dd = day.substring(6); 
  97. return yyyy + '-' + mm +'-' + dd; 
  98. }, 
  99.  
  100. //獲取信息 
  101. getIdCardInfo: function(idCardNo){ 
  102. var idCardInfo = { 
  103. gender:""//性別 
  104. birthday:"" // 出生日期(yyyy-mm-dd) 
  105. }; 
  106. if(idCardNo.length==15){ 
  107. var aday = '19' + idCardNo.substring(6,12); 
  108. idCardInfo.birthday=idCardNoUtil.formateDateCN(aday); 
  109. if(parseInt(idCardNo.charAt(14))%2==0){ 
  110. idCardInfo.gender=idCardNoUtil.genders.female; 
  111. }else
  112. idCardInfo.gender=idCardNoUtil.genders.male; 
  113. }else if(idCardNo.length==18){ 
  114. var aday = idCardNo.substring(6,14); 
  115. idCardInfo.birthday=idCardNoUtil.formateDateCN(aday); 
  116. if(parseInt(idCardNo.charAt(16))%2==0){ 
  117. idCardInfo.gender=idCardNoUtil.genders.female; 
  118. }else
  119. idCardInfo.gender=idCardNoUtil.genders.male; 
  120.  
  121. return idCardInfo; 
  122. }, 
  123. getId15:function(idCardNo){ 
  124. if(idCardNo.length==15){ 
  125. return idCardNo; 
  126. }else if(idCardNo.length==18){ 
  127. return idCardNo.substring(0,6) + idCardNo.substring(8,17); 
  128. }else
  129. return null
  130. }, 
  131. getId18: function(idCardNo){ 
  132. if(idCardNo.length==15){ 
  133. var id17 = idCardNo.substring(0,6) + '19' + idCardNo.substring(6); 
  134. var parityBit = idCardNoUtil.getParityBit(id17); 
  135. return id17 + parityBit; 
  136. }else if(idCardNo.length==18){ 
  137. return idCardNo; 
  138. }else
  139. return null
  140. }; 
  141. //驗證護照是否正確 
  142. function checknumber(number){ 
  143. var str=number; 
  144. //在JavaScript中,正則表達式只能使用"/"開頭和結束,不能使用雙引號 
  145. var Expression=/(P/d{7})|(G/d{8})/; 
  146. var objExp=new RegExp(Expression); 
  147. if(objExp.test(str)==true){ 
  148. return true
  149. }else
  150. return false
  151. }; 

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

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产高清久久久久久久久| 国产成人精品一区二区三区| 伊人精品在线观看| 日韩亚洲成人av在线| 精品国产1区2区| www.久久撸.com| 国产精品第一区| 久久免费视频观看| 国产成人精品一区| 久久久久久久亚洲精品| 国产一区二区三区在线播放免费观看| 国产精品www色诱视频| 精品国产一区二区三区久久久| 国产欧美最新羞羞视频在线观看| 亚洲午夜激情免费视频| 日本欧美黄网站| 亚洲四色影视在线观看| 国内成人精品视频| 欧美日本中文字幕| 国产成人精品亚洲精品| 亚洲一区中文字幕在线观看| 欧美激情视频一区二区| 欧美激情亚洲激情| 日韩在线视频观看| 欧美裸体xxxx极品少妇软件| 欧美极品少妇全裸体| 国产亚洲精品美女久久久| 亚洲欧美日韩精品久久| 欧美激情在线狂野欧美精品| 国产999视频| 国产精品视频一| 成人av番号网| 欧美一级淫片播放口| 国产在线观看不卡| 欧美精品www在线观看| 欧美综合一区第一页| 成人精品网站在线观看| 日韩一区二区三区在线播放| 欧美大成色www永久网站婷| 欧美性xxxx| 欧美人与性动交| 欧美在线一区二区三区四| 日韩av黄色在线观看| 91精品国产自产在线老师啪| 久久6免费高清热精品| 欧美激情性做爰免费视频| 国产精品久久97| 91av在线免费观看视频| 曰本色欧美视频在线| 色午夜这里只有精品| 7m精品福利视频导航| 国产亚洲精品综合一区91| 另类视频在线观看| 久久亚洲精品一区二区| 一区二区欧美日韩视频| www.日本久久久久com.| 综合国产在线视频| 久久99精品国产99久久6尤物| 日本午夜在线亚洲.国产| 97视频在线免费观看| 国产精品成av人在线视午夜片| 中文字幕亚洲综合久久筱田步美| 日韩中文在线视频| 国产福利视频一区| 91天堂在线视频| 国产精品高潮呻吟久久av无限| 久久伊人精品视频| 亚洲精品www久久久| 永久免费精品影视网站| 欧美激情在线观看| 精品久久久久久亚洲精品| 欧美中文字幕在线| 亚洲丝袜av一区| 午夜精品福利电影| 色多多国产成人永久免费网站| 日韩大片在线观看视频| 国产成人精品视频在线观看| 亚洲精品成人久久| 国产成人aa精品一区在线播放| 欧美激情在线狂野欧美精品| 日本成人在线视频网址| 国产精品美女www爽爽爽视频| 亚洲一区中文字幕| 欧美老女人xx| 日本一本a高清免费不卡| 亚洲精品中文字幕女同| 欧美小视频在线| 亚洲美女福利视频网站| 久久人体大胆视频| 草民午夜欧美限制a级福利片| 国产精品自拍视频| 欧美性视频网站| 亚洲第一色中文字幕| 亚洲性线免费观看视频成熟| 在线视频精品一| 欧美极品欧美精品欧美视频| 国产精品看片资源| …久久精品99久久香蕉国产| 亚洲欧美日韩精品| 一区二区三区四区在线观看视频| 26uuu久久噜噜噜噜| 国产欧美日韩视频| 日韩精品视频免费在线观看| 78m国产成人精品视频| 精品国产一区二区三区久久| 久久av中文字幕| 国产精品久久久久久超碰| 亚洲精品福利视频| 欧美成人精品一区二区| 久久久国产一区二区| 欧美一区二区三区图| 国产一区二区三区欧美| 国产一区深夜福利| 日韩精品极品毛片系列视频| 久精品免费视频| 欧美夫妻性视频| 国产主播精品在线| 午夜精品久久久久久99热| 国产噜噜噜噜久久久久久久久| 国产午夜一区二区| 欧美在线视频网站| 亚洲女人被黑人巨大进入al| 在线播放国产一区二区三区| 国产精品视频久| 欧美极品少妇xxxxⅹ免费视频| 久久天天躁夜夜躁狠狠躁2022| 国产精品欧美亚洲777777| 成人免费网站在线观看| zzijzzij亚洲日本成熟少妇| 国产精品扒开腿做爽爽爽视频| 亚洲色图17p| 欧美久久精品一级黑人c片| 91久久久久久久| 欧美成人免费大片| 国产精品久久久久久久久久ktv| xxx欧美精品| 一区二区三区视频免费在线观看| 久久精品国产99国产精品澳门| 久久伊人精品一区二区三区| 国产亚洲成av人片在线观看桃| 亚洲欧美中文日韩v在线观看| 国产精品久久婷婷六月丁香| 97香蕉超级碰碰久久免费的优势| 一区二区三区国产视频| 亚洲sss综合天堂久久| 欧美日韩在线视频首页| 欧美在线视频导航| 亚洲欧美在线播放| 欧美成人免费网| 久久色在线播放| 91人人爽人人爽人人精88v| 国产精品99久久久久久白浆小说| 国产欧美日韩精品在线观看| 国产精品久久久久久久久久久久久久| 亚洲品质视频自拍网| 欧美日韩成人在线视频| 国产剧情日韩欧美| 亚洲国产精品视频在线观看| 亚洲国产古装精品网站| 欧美精品电影在线| 欧美日韩ab片| 亚洲成人网久久久| 视频在线一区二区| 97精品国产97久久久久久|