<script type="text/javascript"> // // javascript 判斷一個數字是不是社會安全號碼 // 代碼摘自 http: //topic.csdn.net/u/20110102/22/e79df4e8-7b0a-4c65-9490-1ef39837ff36.html?8841 function isChinaIDCard(StrNo) { StrNo = StrNo.toString() if (StrNo.length == 18) { var a, b, c if (!isInteger(StrNo.substr(0, 17))) { return false } a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1)) * 9 + parseInt(StrNo.substr(2, 1)) * 10; a = a + parseInt(StrNo.substr(3, 1)) * 5 + parseInt(StrNo.substr(4, 1)) * 8 + parseInt(StrNo.substr(5, 1)) * 4; a = a + parseInt(StrNo.substr(6, 1)) * 2 + parseInt(StrNo.substr(7, 1)) * 1 + parseInt(StrNo.substr(8, 1)) * 6; a = a + parseInt(StrNo.substr(9, 1)) * 3 + parseInt(StrNo.substr(10, 1)) * 7 + parseInt(StrNo.substr(11, 1)) * 9; a = a + parseInt(StrNo.substr(12, 1)) * 10 + parseInt(StrNo.substr(13, 1)) * 5 + parseInt(StrNo.substr(14, 1)) * 8; a = a + parseInt(StrNo.substr(15, 1)) * 4 + parseInt(StrNo.substr(16, 1)) * 2; b = a % 11; if (b == 2) //最後一位為校正位 { c = StrNo.substr(17, 1).toUpperCase(); //轉為大寫X } else { c = parseInt(StrNo.substr(17, 1)); } switch (b) { case 0: if (c != 1) { alert("身份證好號碼校正位錯:最後一位應該為:1"); return false; } break; case 1: if (c != 0) { alert("身份證好號碼校正位錯:最後一位應該為:0"); return false; } break; case 2: if (c != "X") { alert("身份證好號碼校正位錯:最後一位應該為:X"); return false; } break; case 3: if (c != 9) { alert("身份證好號碼校正位錯:最後一位應該為:9"); return false; } break; case 4: if (c != 8) { alert("身份證好號碼校正位錯:最後一位應該為:8"); return false; } break; case 5: if (c != 7) { alert("身份證好號碼校正位錯:最後一位應該為:7"); return false; } break; case 6: if (c != 6) { alert("身份證好號碼校正位錯:最後一位應該為:6"); return false; } break; case 7: if (c != 5) { alert("身份證好號碼校正位錯:最後一位應該為:5"); return false; } break; case 8: if (c != 4) { alert("身份證好號碼校正位錯:最後一位應該為:4"); return false; } break; case 9: if (c != 3) { alert("身份證好號碼校正位錯:最後一位應該為:3"); return false; } break; case 10: if (c != 2) { alert("身份證好號碼校正位錯:最後一位應該為:2"); return false } } } else //15位社會安全號碼 { if (!isInteger(StrNo)) { alert("社會安全號碼碼錯誤,前15位不能含有英文字母!"); return false } } switch (StrNo.length) { case 15: return true; case 18: return true; } alert("輸入的社會安全號碼碼必須為15位或者18位!"); return false; } </script>