自动排除了 lib,导致js 不全
This commit is contained in:
181
static/src/js/lib/formValidation/helper.js
Executable file
181
static/src/js/lib/formValidation/helper.js
Executable file
@@ -0,0 +1,181 @@
|
||||
/**
|
||||
* FormValidation (http://formvalidation.io)
|
||||
* The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit frameworks
|
||||
*
|
||||
* @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("helper", ["jquery", "base"], factory);
|
||||
} else {
|
||||
// planted over the root!
|
||||
factory(root.jQuery, root.FormValidation);
|
||||
}
|
||||
|
||||
}(this, function ($, FormValidation) {
|
||||
|
||||
// Helper methods, which can be used in validator class
|
||||
FormValidation.Helper = {
|
||||
/**
|
||||
* Execute a callback function
|
||||
*
|
||||
* @param {String|Function} functionName Can be
|
||||
* - name of global function
|
||||
* - name of namespace function (such as A.B.C)
|
||||
* - a function
|
||||
* @param {Array} args The callback arguments
|
||||
*/
|
||||
call: function(functionName, args) {
|
||||
if ('function' === typeof functionName) {
|
||||
return functionName.apply(this, args);
|
||||
} else if ('string' === typeof functionName) {
|
||||
if ('()' === functionName.substring(functionName.length - 2)) {
|
||||
functionName = functionName.substring(0, functionName.length - 2);
|
||||
}
|
||||
var ns = functionName.split('.'),
|
||||
func = ns.pop(),
|
||||
context = window;
|
||||
for (var i = 0; i < ns.length; i++) {
|
||||
context = context[ns[i]];
|
||||
}
|
||||
|
||||
return (typeof context[func] === 'undefined') ? null : context[func].apply(this, args);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Validate a date
|
||||
*
|
||||
* @param {Number} year The full year in 4 digits
|
||||
* @param {Number} month The month number
|
||||
* @param {Number} day The day number
|
||||
* @param {Boolean} [notInFuture] If true, the date must not be in the future
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
date: function(year, month, day, notInFuture) {
|
||||
if (isNaN(year) || isNaN(month) || isNaN(day)) {
|
||||
return false;
|
||||
}
|
||||
if (day.length > 2 || month.length > 2 || year.length > 4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
day = parseInt(day, 10);
|
||||
month = parseInt(month, 10);
|
||||
year = parseInt(year, 10);
|
||||
|
||||
if (year < 1000 || year > 9999 || month <= 0 || month > 12) {
|
||||
return false;
|
||||
}
|
||||
var numDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
||||
// Update the number of days in Feb of leap year
|
||||
if (year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0)) {
|
||||
numDays[1] = 29;
|
||||
}
|
||||
|
||||
// Check the day
|
||||
if (day <= 0 || day > numDays[month - 1]) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (notInFuture === true) {
|
||||
var currentDate = new Date(),
|
||||
currentYear = currentDate.getFullYear(),
|
||||
currentMonth = currentDate.getMonth(),
|
||||
currentDay = currentDate.getDate();
|
||||
return (year < currentYear
|
||||
|| (year === currentYear && month - 1 < currentMonth)
|
||||
|| (year === currentYear && month - 1 === currentMonth && day < currentDay));
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Format a string
|
||||
* It's used to format the error message
|
||||
* format('The field must between %s and %s', [10, 20]) = 'The field must between 10 and 20'
|
||||
*
|
||||
* @param {String} message
|
||||
* @param {Array} parameters
|
||||
* @returns {String}
|
||||
*/
|
||||
format: function(message, parameters) {
|
||||
if (!$.isArray(parameters)) {
|
||||
parameters = [parameters];
|
||||
}
|
||||
|
||||
for (var i in parameters) {
|
||||
message = message.replace('%s', parameters[i]);
|
||||
}
|
||||
|
||||
return message;
|
||||
},
|
||||
|
||||
/**
|
||||
* Implement Luhn validation algorithm
|
||||
* Credit to https://gist.github.com/ShirtlessKirk/2134376
|
||||
*
|
||||
* @see http://en.wikipedia.org/wiki/Luhn
|
||||
* @param {String} value
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
luhn: function(value) {
|
||||
var length = value.length,
|
||||
mul = 0,
|
||||
prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
|
||||
sum = 0;
|
||||
|
||||
while (length--) {
|
||||
sum += prodArr[mul][parseInt(value.charAt(length), 10)];
|
||||
mul ^= 1;
|
||||
}
|
||||
|
||||
return (sum % 10 === 0 && sum > 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* Implement modulus 11, 10 (ISO 7064) algorithm
|
||||
*
|
||||
* @param {String} value
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
mod11And10: function(value) {
|
||||
var check = 5,
|
||||
length = value.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
check = (((check || 10) * 2) % 11 + parseInt(value.charAt(i), 10)) % 10;
|
||||
}
|
||||
return (check === 1);
|
||||
},
|
||||
|
||||
/**
|
||||
* Implements Mod 37, 36 (ISO 7064) algorithm
|
||||
* Usages:
|
||||
* mod37And36('A12425GABC1234002M')
|
||||
* mod37And36('002006673085', '0123456789')
|
||||
*
|
||||
* @param {String} value
|
||||
* @param {String} [alphabet]
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
mod37And36: function(value, alphabet) {
|
||||
alphabet = alphabet || '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
var modulus = alphabet.length,
|
||||
length = value.length,
|
||||
check = Math.floor(modulus / 2);
|
||||
for (var i = 0; i < length; i++) {
|
||||
check = (((check || modulus) * 2) % (modulus + 1) + alphabet.indexOf(value.charAt(i))) % modulus;
|
||||
}
|
||||
return (check === 1);
|
||||
}
|
||||
};
|
||||
return FormValidation.Helper;
|
||||
}));
|
||||
Reference in New Issue
Block a user