《怎樣嚴格檢驗身份證號碼?一個驗證Javascript身份證號驗證函數》要點:
本文介紹了怎樣嚴格檢驗身份證號碼?一個驗證Javascript身份證號驗證函數,希望對您有用。如果有疑問,可以聯系我們。
相關主題:JS、Jquery插件
如果需要PHP服務器端身份證驗證類,查看這里:http://www.snjht.com/jiaocheng/43.html
普通的身份證驗證函數,都是只對身份證格式驗證。而這個函數,則進一步驗證了身份證有效與否。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>嚴格的身份證號驗證</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> </head> <body> <h3>嚴格的身份證號驗證</h3> <script type="text/javascript"> function idCardCheck(idValue) { var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加權因子; var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份證驗證位值,10代表X; if (idValue.length == 15) { return isValidityBrithBy15IdCard(idValue); } else if (idValue.length == 18) { var a_idCard = idValue.split("");// 得到身份證數組 if (isValidityBrithBy18IdCard(idValue) && isTrueValidateCodeBy18IdCard(a_idCard)) { return true; } return false; } return false; function isTrueValidateCodeBy18IdCard(a_idCard) { var sum = 0; // 聲明加權求和變量 if (a_idCard[17].toLowerCase() == 'x') { a_idCard[17] = 10;// 將最后位為x的驗證碼替換為10方便后續操作 } for (var i = 0; i < 17; i++) { sum += Wi[i] * a_idCard[i];// 加權求和 } valCodePosition = sum % 11;// 得到驗證碼所位置 if (a_idCard[17] == ValideCode[valCodePosition]) { return true; } return false; } function isValidityBrithBy18IdCard(idCard18) { var year = idCard18.substring(6, 10); var month = idCard18.substring(10, 12); var day = idCard18.substring(12, 14); var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); // 這里用getFullYear()獲取年份,避免千年蟲問題 if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) { return false; } return true; } function isValidityBrithBy15IdCard(idCard15) { var year = idCard15.substring(6, 8); var month = idCard15.substring(8, 10); var day = idCard15.substring(10, 12); var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); // 對于老身份證中的你年齡則不需考慮千年蟲問題而使用getYear()方法 if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) { return false; } return true; } } // idCardCheck結束 function checkId(){ var idCard = $('input[name=idCard]').val(); var isId = idCardCheck(idCard); if(isId) $('span').html('正確的身份證號'); else $('span').html('錯誤的身份證號'); } </script> <input type="text" name="idCard" onblur="checkId();" /> <span></span> </body> </html>
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6.html