利用 jQuery.Validate 驗證中華民國身份證字號
- 7019
- 3
因為 jQuery Validate 實在是 Client 端驗證的極品,所以前先日子遇到了個驗證身分證字號的需求,剛好在網路上有找到不錯的範例,使用了以後發生某些英文開頭的身分證字號死都驗證不過於是就修改了一下 code ,再放上來分享給各位。
- 最後更新:2011/8/16 上午 12:26:47
原始的 code 是參考「http://blog.yorkxin.org/2009/02/03/jquery-validate-roc-citizen-id/」 這裡的
修正身分證字號尾數為 0 的時候會判斷錯誤的問題
要使用jQuery.Validate就必須要先載入 jQuery,怎麼載入的部份 demo 就預設各位都已經會了,如果不了解其實網路上也有不計其數的資料可以搜尋,我在這裡只單純貼上我修改過後的 code 。
// 台灣身份證字號格式檢查程式
jQuery.validator.addMethod("TWIDCheck", function(value, element, param)
{
var a = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'I', 'O');
var b = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1);
var c = new Array(2);
var d;
var e;
var f;
var g = 0;
var h = /^[a-z](1|2)\d{8}$/i;
if (value.search(h) == -1)
{
return false;
}
else
{
d = value.charAt(0).toUpperCase();
f = value.charAt(9);
}
for (var i = 0; i < 26; i++)
{
if (d == a[i])//a==a
{
e = i + 10; //10
c[0] = Math.floor(e / 10); //1
c[1] = e - (c[0] * 10); //10-(1*10)
break;
}
}
for (var i = 0; i < b.length; i++)
{
if (i < 2)
{
g += c[i] * b[i];
}
else
{
g += parseInt(value.charAt(i - 1)) * b[i];
}
}
if ((g % 10) == f)
{
return true;
}
if ((10 - (g % 10)) != f)
{
return false;
}
return true;
}, "請輸入有效的身份證字號!");
身分證字號的規則可以參考demo之前的文章「http://demo.tc/Post/383」
以上邏輯使用過亂數1000筆的身分證字號驗證過

網友回應
- Chan

- 發表於: 2011-08-16
- 站長太客氣了啦 XD
-
有人回報錯誤我也很開心阿
回覆於: 2011-08-16
- Chan

- 發表於: 2011-08-15
- 站長你好
n125462660
這組身份證我確定是存在的,但卻不會過 -
非常抱歉,這是我的疏忽,文章已經修正了,並且也做了驗證(亂數產生1000筆身分證字號)。
回覆於: 2011-08-16
- ningin

- 發表於: 2009-07-29
- Validate 的addmethod應該是三個參數
站長貼的程式碼看起來好像沒有貼完耶
還是我誤會了呢? -
你可以貼上去玩看看^^
回覆於: 2009-07-29