扩展jQuery Validator验证方法,验证UPC

 

使用jQuery validator对form进行验证非常方便且功能强大。jQuery validator 内置了10多种验证方法,包括required, e-mail, url, min-lenght, max-length, min, max, range, date 等等……而且它还允许通过 addMethod 函数添加新的验证方法。

 

项目中需要验证UPC码,于是在jQuery Validator的基础上开发了一个验证UPC代码的方法。

UPC码的最后一位是校验码,UPC校验码的计算方法:

1. 将UPC码奇数位的数字(不包括校验位)求和,然后乘以3;

2. 将UPC码偶数位的数字(不包括校验位)求和,并加上第一步的计算结果;

3. 将第二步的计算结果除以10取余。如果余数不为0,则10减去余数得出校验码;如果余数为0,则校验码为0。

举例:某种面巾纸盒子上的UPC条码是036000241457。最后一位数字7是校验码,如果其它数字都正确,那么校验码肯定是7。计算步骤:

1. 奇数位数字求和,并乘以3: (0+6+0+2+1+5) X 3 = 42

2. 偶数位数字求和: 3+0+0+4+4 = 11

3. 第一步和第二步的结果相加: 42 + 11 = 53

4. 将第3步结果除以10取余,然后用10减去余数:53 % 10 = 3, 10 – 3 = 7。得出最终的校验码为7。 

维基百科中关于的UPC的条目:http://en.wikipedia.org/wiki/Universal_Product_Code

 

验证UPC代码的JavaScript源码:

// Author: Ken Yang
// Blog:   http://www.cnblogs.com/kenyang/
// 分发和使用该JavaScript脚本,请保留完整的作者信息。
function validateUpc(upc) {

    var leftDigits, checkDigit;
    leftDigits = upc.substr(0, upc.length - 1);

    var even = 0;
    var odd = 0;
    for (var i = 0; i < leftDigits.length; i++) {
        if (i % 2 == 0) {
            odd += parseInt(leftDigits.substr(i, 1)) * 3;
        }
        else {
            even += parseInt(leftDigits.substr(i, 1));
        }
    }
    var reminder = (odd + even) % 10;

    checkDigit = reminder == 0 ? 0 : 10 - reminder;

    return checkDigit.toString() == upc.substr(upc.length - 1, 1);

}

jQuery.validator.addMethod("upc", validateUpc, "Please enter a valid UPC."); //将验证方法添加到jQuery Validator

 

免费下载连接:

https://files.cnblogs.com/kenyang/jQuery-validator-upc-1.0.js

 

使用起来也很简单,只需要在html页面添加一个引用这个Plugin的链接(当然还需要引用jQuery 核心库和jQuery Validator),然后将需要验证的文本框添加一个upc 类。以下是一个html示例:

<!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>
    <title></title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
    <script src="https://files.cnblogs.com/kenyang/jQuery-validator-upc-1.0.js" type="text/javascript"></script>
    <script type="text/javascript">

        $().ready(function () {
            $("#upcForm").validate();
        });

    </script>
</head>
<body>
<h2>Using customized validation function to validate UPC code.</h2>
    <form id="upcForm" action="">
    <label>UPC code</label>
    <input id="Text1" type="text" class="upc" />
    </form>
</body>
</html>

 

当在文本框Text1中输入的UPC代码不正确时,文本框旁边会显示"Please enter a valid UPC. "。

posted @ 2012-03-18 20:36  Ken Yang  阅读(1028)  评论(1编辑  收藏  举报