| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- (function($) {
- $.fn.bootstrapValidator.i18n.cusip = $.extend($.fn.bootstrapValidator.i18n.cusip || {}, {
- 'default': 'Please enter a valid CUSIP number'
- });
- $.fn.bootstrapValidator.validators.cusip = {
- /**
- * Validate a CUSIP
- * Examples:
- * - Valid: 037833100, 931142103, 14149YAR8, 126650BG6
- * - Invalid: 31430F200, 022615AC2
- *
- * @see http://en.wikipedia.org/wiki/CUSIP
- * @param {BootstrapValidator} validator The validator plugin instance
- * @param {jQuery} $field Field element
- * @param {Object} [options] Can consist of the following keys:
- * - message: The invalid message
- * @returns {Boolean}
- */
- validate: function(validator, $field, options) {
- var value = $field.val();
- if (value === '') {
- return true;
- }
- value = value.toUpperCase();
- if (!/^[0-9A-Z]{9}$/.test(value)) {
- return false;
- }
- var converted = $.map(value.split(''), function(item) {
- var code = item.charCodeAt(0);
- return (code >= 'A'.charCodeAt(0) && code <= 'Z'.charCodeAt(0))
- // Replace A, B, C, ..., Z with 10, 11, ..., 35
- ? (code - 'A'.charCodeAt(0) + 10)
- : item;
- }),
- length = converted.length,
- sum = 0;
- for (var i = 0; i < length - 1; i++) {
- var num = parseInt(converted[i], 10);
- if (i % 2 !== 0) {
- num *= 2;
- }
- if (num > 9) {
- num -= 9;
- }
- sum += num;
- }
- sum = (10 - (sum % 10)) % 10;
- return sum === converted[length - 1];
- }
- };
- }(jQuery));
|