假设EAN13条码的规则从左往右依次是
N13 N12 N11 N10 N9 N8 N7 N6 N5 N4 N3 N2 N1
其中N1是校验码
校验算法为 10 - {取个位数(双数位数之和)x 3 + (单数位数之和)}
下面为前端JS校验代码
<!DOCTYPE html>
<html>
<head>
<title>条码校验</title>
</head>
<body>
<h4>EN13条码校验,请输入13位条码</h4>
<input type="text" name="code" id="code">
<button id="check" onclick="docheck()">校验</button>
</body>
</html>
<script type="text/javascript">
function docheck(){
var code = document.getElementById('code').value;
var i=code.length; //得到字符长度
if(i!=13){
alert("条码位数不对"); //EAN13必须13位
}else
{
var n=new Array; //初始化数组
for(i==0;i--;){
n[i]=parseInt(code.charAt(i));//数组赋值
}
var c1 = (n[1]+n[3]+n[5]+n[7]+n[9]+n[11])*3;//双数之和*3 注意数组的第一位是【0】
var c2 = (n[0]+n[2]+n[4]+n[6]+n[8]+n[10])*1;//单数之和
var c3 = (c1+c2).toString();//相加后转换为字符串
var c4 = c3.charAt(c3.length-1);//取得最后一位
var n1 = 10-c4;//拿到校验码
if(n1==10){n1=0;} //如果c4为0,效验码为0
if(n1==n[12]){
alert("条码合法"); //判断是否一致
}else{
alert("条码输入错误");
}
}
}
</script>