使用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. "。