2008年8月8日 星期五

[javascript] 統一編號 驗證~


function ValidateTaxID(sTaxID)
{
try
{
var i;
var a1;
var a2;
var a3;
var a4;
var a5;
var b1;
var b2;
var b3;
var b4;
var b5;
var c1;
var c2;
var c3;
var c4;
var d1;
var d2;
var d3;
var d4;
var d5;
var d6;
var d7;
var cd8;
if(sTaxID.length != 8) return false;
var c;
for (i = 0; i < 8; i++)
{
c = sTaxID.charAt(i);
if ("0123456789".indexOf(c) == -1) return false;
}
d1 = parseInt(sTaxID.charAt(0));
d2 = parseInt(sTaxID.charAt(1));
d3 = parseInt(sTaxID.charAt(2));
d4 = parseInt(sTaxID.charAt(3));
d5 = parseInt(sTaxID.charAt(4));
d6 = parseInt(sTaxID.charAt(5));
d7 = parseInt(sTaxID.charAt(6));
cd8 = parseInt(sTaxID.charAt(7));
c1 = d1;
c2 = d3;
c3 = d5;
c4 = cd8;
a1 = parseInt((d2 * 2) / 10);
b1 = (d2 * 2) % 10;
a2 = parseInt((d4 * 2) / 10);
b2 = (d4 * 2) % 10;
a3 = parseInt((d6 * 2) / 10);
b3 = (d6 * 2) % 10;
a4 = parseInt((d7 * 4) / 10);
b4 = (d7 * 4) % 10;
a5 = parseInt((a4 + b4) / 10);
b5 = (a4 + b4) % 10;
if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a4 + b4 + c4) % 10 == 0) return true;
if(d7 = 7){
if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a5 + c4) % 10 == 0) return true;
}
return false;
}catch(e){
return false;
}}


另一種方法:

function check(){
if( document.form1.no.value == null || document.form1.no.value == ''){
alert('請輸入統一編號八位');
return false;
}else if( !myRegNumber.test(document.form1.no.value)){
alert('請輸入統一編號數字八位');
return false;
}else if(!CheckCompanyNo(document.form1.no.value)){
return false;
}
}


function CheckCompanyNo(thisObj){
comNo=thisObj;
var res = new Array(8);
var key = "12121241";
var isModeTwo = false; //第七個數是否為七
var result = 0;

if(comNo.length != 8){
alert('【統一編號】不可少於或多於8碼!');
return false ;
}
for(var i=0; i<8; i++)
{
var tmp = comNo.charAt(i) * key.charAt(i);
res[i] = Math.floor(tmp/10) + (tmp%10); //取出十位數和個位數相加
if(i == 6 && comNo.charAt(i) == 7)
isModeTwo = true;
}
for(var s=0; s<8; s++)
result += res[s];

if(isModeTwo){
if((result % 10) != 0 && ((result + 1) % 10) != 0){//如果第七位數為7
alert('【統一編號】編碼不正確,請重新輸入!');
return false ;
}
}
else
if((result % 10) != 0){
alert('【統一編號】編碼不正確,請重新輸入!');
return false ;
}
return true;
}

【下列文章您可能也有興趣】

2 則留言:

Last Round 提到...

我正在找如何判斷公司統一編號正確性之方式,你的資訊最完整最正確!拍拍手!!

千江有水千江月 提到...

歡迎取用.