扩展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

 

免费下载连接:

http://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="http://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. "。

你可能感兴趣的:(Validator)