mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
78 lines
2.4 KiB
JavaScript
Executable File
78 lines
2.4 KiB
JavaScript
Executable File
/**
|
|
* vin validator
|
|
*
|
|
* @link http://formvalidation.io/validators/vin/
|
|
* @author https://twitter.com/nghuuphuoc
|
|
* @copyright (c) 2013 - 2015 Nguyen Huu Phuoc
|
|
* @license http://formvalidation.io/license/
|
|
*/
|
|
|
|
(function(root, factory) {
|
|
|
|
"use strict";
|
|
|
|
// AMD module is defined
|
|
if (typeof define === "function" && define.amd) {
|
|
define("validator/vin", ["jquery", "base"], factory);
|
|
} else {
|
|
// planted over the root!
|
|
factory(root.jQuery, root.FormValidation);
|
|
}
|
|
|
|
}(this, function ($, FormValidation) {
|
|
FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
|
|
'en_US': {
|
|
vin: {
|
|
'default': 'Please enter a valid VIN number'
|
|
}
|
|
}
|
|
});
|
|
|
|
FormValidation.Validator.vin = {
|
|
/**
|
|
* Validate an US VIN (Vehicle Identification Number)
|
|
*
|
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
* @param {jQuery} $field Field element
|
|
* @param {Object} options Consist of key:
|
|
* - message: The invalid message
|
|
* @returns {Boolean}
|
|
*/
|
|
validate: function(validator, $field, options) {
|
|
var value = validator.getFieldValue($field, 'vin');
|
|
if (value === '') {
|
|
return true;
|
|
}
|
|
|
|
// Don't accept I, O, Q characters
|
|
if (!/^[a-hj-npr-z0-9]{8}[0-9xX][a-hj-npr-z0-9]{8}$/i.test(value)) {
|
|
return false;
|
|
}
|
|
|
|
value = value.toUpperCase();
|
|
var chars = {
|
|
A: 1, B: 2, C: 3, D: 4, E: 5, F: 6, G: 7, H: 8,
|
|
J: 1, K: 2, L: 3, M: 4, N: 5, P: 7, R: 9,
|
|
S: 2, T: 3, U: 4, V: 5, W: 6, X: 7, Y: 8, Z: 9,
|
|
'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 0
|
|
},
|
|
weights = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2],
|
|
sum = 0,
|
|
length = value.length;
|
|
for (var i = 0; i < length; i++) {
|
|
sum += chars[value.charAt(i) + ''] * weights[i];
|
|
}
|
|
|
|
var reminder = sum % 11;
|
|
if (reminder === 10) {
|
|
reminder = 'X';
|
|
}
|
|
|
|
return (reminder + '') === value.charAt(8);
|
|
}
|
|
};
|
|
|
|
|
|
return FormValidation.Validator.vin;
|
|
}));
|