使用javascript實現身份證校驗與資訊提取
阿新 • • 發佈:2019-01-04
我們先了解一下身份證是怎麼校驗的:
將前面的身份證號碼17位數分別乘以不同的係數,將這17位數字和係數相乘的結果相加,然後除以11求餘,根據最後的餘數對應校驗碼,判斷身份證是否符合要求。
現在我們開始寫程式碼
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <p>身份證號:<input type='text' id='idCard'/></p> <P>出生日期:<input type='text' readonly id='age'/></P> <P> 性 別:<input type='radio' disabled name='sex' id='man'>男 <input type='radio' name='sex' disabled id='woman'>女 </P> <P>籍 貫:<input type='text' readonly id='dess'></P> <button type='button' id='btnSub'>確定</button> <script src='js/jquery-1.11.3.min.js'></script> <script> $("#btnSub").click(function(){ var idCard = $("#idCard").val(); //根據身份證不同的位置,擷取相對應的資料 var sex = idCard.substring(16,17); var num = idCard.substring(17,18); var year = idCard.substring(6,10); var month = idCard.substring(10,12); var day = idCard.substring(12,14); var age = year+"-"+month+"-"+day; var date = new Date(age); var sum = 0; var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,0]; var arr2 = [1,0,'X',9,8,7,6,5,4,3,2]; //判斷身份證是否為空,或者長度有沒有達到要求(這裡規定身份證18位) if(!(idCard && /^[\d]{18}$/.test(idCard))){ alert("身份證輸入格式不對!") return false; }else{ //計算第18位數 是否符合要求 for(var i=0;i<18;i++){ sum += idCard.substring(i,i+1)*arr[i] } if(num== arr2[sum%11] || num===arr2[sum%11]){ $("#age").val(age) if(sex%2 == 1){ $("#man").prop("checked","true") }else{ $("#woman").prop("checked","true") } $.ajax({ url:"IdCardServlet", type:"get", data:{idCard:idCard}, success:function(data){ $.each(data,function(index,obj){ $("#dess").val(obj.detail); }) } }) }else{ alert("身份證輸入格式不對!") $("#man").removeAttr("checked") $("#woman").removeAttr("checked") $("#dess").val(""); $("#age").val(""); return false; } } }) </script> </body> </html>
效果圖:
如果需要顯示籍貫的話,需要那對應的數字去資料庫中查詢顯示。