请高手帮忙写一个javascript函数,
要求:调用函数的时候传入一个12位的纯数字字符串,按照EAN13的校验规则算出最后一位,然后返回完整的13位字符串
http://blog.csdn.net/jiafugui/archive/2010/11/23/6030594.aspx这里有EAN13的算法,也有源码,但不是javascript的,谢谢啦
要求:调用函数的时候传入一个12位的纯数字字符串,按照EAN13的校验规则算出最后一位,然后返回完整的13位字符串
http://blog.csdn.net/jiafugui/archive/2010/11/23/6030594.aspx这里有EAN13的算法,也有源码,但不是javascript的,谢谢啦
解决方案 »
- List<Map<Object, Object>> list 数据排序请教
- 怎样将对象里面某一项后面所有项值清空?
- 层拖动时滚动条问题
- 不用函数对JS数组尾部添加值
- 用javascript 可不可以得到客户端的域用户名
- 一个javascript的错误,很简单,把一个文本框的值显示到另一个文本框中。
- about Div in HTML and PHP
- 如何避免出现安全警告啊?
- 请问如何捕捉页面中光标位置的偏移量,想实现一个书签功能
- 如何判断页面的某个对象是否存在?
- 某个字符在字符串第二次出现的位置
- 想要改造系统,多用javascript实现酷的效果,请给推荐效果演示以及代码地址,我参考做。来者有分!感谢!
[code=HTM]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<script type="text/javascript">
function check(sn){
var r=0,r1=0,r2=0;
var len = sn.length;
for(var i=2;i<=len;i++){
if(i%2)
r1 += parseInt(sn.charAt(len-i),10);
else
r2 += parseInt(sn.charAt(len-i),10);
}
r = r1 + r2 * 3;
r = Math.ceil(r / 10) * 10 - r;
if(parseInt(sn.charAt(len-1))!=r)
alert('校验错误,最后一位应该是'+r+'\r\n你的输入是:'+sn);
else
alert('正确');
}
check('6901234567892');
check('6901234567891')
</script>
</body>
</html>[/code]
[code=HTM]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<script type="text/javascript">
function check(sn){
var r=0,r1=0,r2=0;
var len = sn.length;
for(var i=2;i<=len;i++){
if(i%2)
r1 += parseInt(sn.charAt(len-i),10);
else
r2 += parseInt(sn.charAt(len-i),10);
}
r = r1 + r2 * 3;
r = Math.ceil(r / 10) * 10 - r;
if(parseInt(sn.charAt(len-1))!=r)
alert('校验错误,最后一位应该是'+r+'\r\n你的输入是:'+sn);
else
alert('正确');
}
check('6901234567892');
check('6901234567891')
</script>
</body>
</html>[/code]
修改版<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<script type="text/javascript">
function check(sn){
var r=0,r1=0,r2=0;
var len = sn.length;
for(var i=1;i<=len;i++){
if(i%2)
r2 += parseInt(sn.charAt(len-i),10);
else
r1 += parseInt(sn.charAt(len-i),10);
}
r = r1 + r2 * 3;
r = Math.ceil(r / 10) * 10 - r;
return sn + r;
}
alert( check('690123456789'));
</script>
</body>
</html>