用Javascript计算EAN-13标准条形码最后一位校验码

  今天一来上班看到同事群里面说起EAN-13标准条形码最后一位校验码的事,于是顺手用js写了这个算法。今日个周一,又是一周新的开始祝大家天天好心情!

/*
EAN-13标准条形码最后一位校验码的计算步骤如下:
a、从代码位置序号2开始,所有偶数位的数字代码求和。
b、将步骤a的和乘以3。
c、从代码位置序号3开始,所有奇数位的数字代码求和。
d、将步骤b与步骤c的结果相加。
e、用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。
解释: EAN-13标准条形码代码位置从右到左序号13 12 11 10 9 8 7 6 5 4 3 2 1
作者:网帆
创建时间:2011-06-13
*/

function isBarCode(s) {
var reg = new RegExp(/^[0-9]{12}$/);
if (reg.exec(s.substring(0, 12)))
return true;
else
return false;
}

function CheckBarCode(s) {
if (!isBarCode(s)) {
return "验证条形码前12位出错!";
}
var a = 0;
var b = 0;
var c = 0;
var d = 0;
var e = 0;
for (var i = 1; i <= 12; i++) {
var sc = parseInt(s[i - 1]);
if (i <= 12 && i % 2 == 0) {
a
+= sc;
}
else if (i <= 11 && i % 2 == 1) {
b
+= sc;
}
}

c
= a * 3;
d
= b + c;
if (d % 10 == 0)
e
= d - d;
else
e
= d + (10 - d % 10) - d;
return e;
}

alert(
"校验码是:" + CheckBarCode("693721090010X"));

posted @ 2011-06-13 09:29  网帆  阅读(3675)  评论(2编辑  收藏  举报