Google Code Prettify

[台灣]統一編號檢查實作

公司的統一編號和身份證號碼一樣, 都有一套公式做為檢驗, 其運算公式為:
  • 假設統一編號為 A B C D E F G H
  • A - G 為編號, H 為檢查碼
  • A - G 個別乘上特定倍數, 若乘出來的值為二位數則將十位數和個位數相加
    • A x 1
    • B x 2
    • C x 1
    • D x 2
    • E x 1
    • F x 2
    • G x 4
    • H x 1
  • 最後將所有數值加總, 被 10 整除就為正確
  • 若上述演算不正確並且 G 為 7 得話, 再加上 1 被 10 整除也為正確


var cx = new Array;
cx[0] = 1;
cx[1] = 2;
cx[2] = 1;
cx[3] = 2;
cx[4] = 1;
cx[5] = 2;
cx[6] = 4;
cx[7] = 1;
function chknum(){
  var NO = document.F.NUM.value;
  var SUM = 0;
  if (NO.length != 8) {
    alert("統編錯誤,要有 8 個數字");
    return;
  }
  var cnum = NO.split("");
  for (i=0; i<=7; i++) {
    if (NO.charCodeAt() < 48 || NO.charCodeAt() > 57) {
      alert("統編錯誤,要有 8 個 0-9 數字組合");
      return;
    }
    SUM += cc(cnum[i] * cx[i]);
  }
  if (SUM % 10 == 0) alert("統一編號:"+NO+" 正確!");
  else if (cnum[6] == 7 && (SUM + 1) % 10 == 0) alert("統一編號:"+NO+" 正確!");
  else alert("統一編號:"+NO+" 錯誤!");
}

function cc(n){
  if (n > 9) {
    var s = n + "";
    n1 = s.substring(0,1) * 1;
    n2 = s.substring(1,2) * 1;
    n = n1 + n2;
  }
  return n;
}