我們先了解一下身份證是怎么校驗的:
將前面的身份證號碼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>
效果圖:



如果需要顯示籍貫的話,需要那對應的數字去數據庫中查找顯示。
