JavaScript实现EAN13条码校验

假设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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值