parent
2f9ce959ea
commit
ac9addabcc
|
|
@ -1,44 +1,15 @@
|
|||
{
|
||||
"name": "jquery-validation-unobtrusive",
|
||||
"version": "3.2.6",
|
||||
"homepage": "https://github.com/aspnet/jquery-validation-unobtrusive",
|
||||
"description": "Add-on to jQuery Validation to enable unobtrusive validation options in data-* attributes.",
|
||||
"main": [
|
||||
"jquery.validate.unobtrusive.js"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"*.json",
|
||||
"*.md",
|
||||
"*.txt",
|
||||
"gulpfile.js"
|
||||
],
|
||||
"keywords": [
|
||||
"jquery",
|
||||
"asp.net",
|
||||
"mvc",
|
||||
"validation",
|
||||
"unobtrusive"
|
||||
],
|
||||
"authors": [
|
||||
"Microsoft"
|
||||
],
|
||||
"license": "http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/aspnet/jquery-validation-unobtrusive.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery-validation": ">=1.8",
|
||||
"jquery": ">=1.8"
|
||||
},
|
||||
"_release": "3.2.6",
|
||||
"version": "3.2.9",
|
||||
"_release": "3.2.9",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v3.2.6",
|
||||
"commit": "13386cd1b5947d8a5d23a12b531ce3960be1eba7"
|
||||
"tag": "v3.2.9",
|
||||
"commit": "a91f5401898e125f10771c5f5f0909d8c4c82396"
|
||||
},
|
||||
"_source": "git://github.com/aspnet/jquery-validation-unobtrusive.git",
|
||||
"_target": "3.2.6",
|
||||
"_originalSource": "jquery-validation-unobtrusive"
|
||||
"_source": "https://github.com/aspnet/jquery-validation-unobtrusive.git",
|
||||
"_target": "^3.2.9",
|
||||
"_originalSource": "jquery-validation-unobtrusive",
|
||||
"_direct": true
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
Copyright (c) .NET Foundation. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
these files except in compliance with the License. You may obtain a copy of the
|
||||
License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed
|
||||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations under the License.
|
||||
|
|
@ -1,12 +1,22 @@
|
|||
/*!
|
||||
** Unobtrusive validation support library for jQuery and jQuery Validate
|
||||
** Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
*/
|
||||
// Unobtrusive validation support library for jQuery and jQuery Validate
|
||||
// Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
// @version v3.2.9
|
||||
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
|
||||
/*global document: false, jQuery: false */
|
||||
|
||||
(function ($) {
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define("jquery.validate.unobtrusive", ['jquery.validation'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// CommonJS-like environments that support module.exports
|
||||
module.exports = factory(require('jquery-validation'));
|
||||
} else {
|
||||
// Browser global
|
||||
jQuery.validator.unobtrusive = factory(jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
var $jQval = $.validator,
|
||||
adapters,
|
||||
data_validation = "unobtrusiveValidation";
|
||||
|
|
@ -118,7 +128,7 @@
|
|||
execInContext = function (name, args) {
|
||||
var func = defaultOptions[name];
|
||||
func && $.isFunction(func) && func.apply(form, args);
|
||||
}
|
||||
};
|
||||
|
||||
if (!result) {
|
||||
result = {
|
||||
|
|
@ -409,8 +419,13 @@
|
|||
setValidationValues(options, "regex", options.params.regex);
|
||||
}
|
||||
});
|
||||
adapters.add("fileextensions", ["extensions"], function (options) {
|
||||
setValidationValues(options, "extension", options.params.extensions);
|
||||
});
|
||||
|
||||
$(function () {
|
||||
$jQval.unobtrusive.parse(document);
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
return $jQval.unobtrusive;
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "jquery-validation",
|
||||
"homepage": "http://jqueryvalidation.org/",
|
||||
"homepage": "https://jqueryvalidation.org/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/jzaefferer/jquery-validation.git"
|
||||
"url": "git://github.com/jquery-validation/jquery-validation.git"
|
||||
},
|
||||
"authors": [
|
||||
"Jörn Zaefferer <joern.zaefferer@gmail.com>"
|
||||
|
|
@ -27,14 +27,15 @@
|
|||
"dependencies": {
|
||||
"jquery": ">= 1.7.2"
|
||||
},
|
||||
"version": "1.14.0",
|
||||
"_release": "1.14.0",
|
||||
"version": "1.17.0",
|
||||
"_release": "1.17.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.14.0",
|
||||
"commit": "c1343fb9823392aa9acbe1c3ffd337b8c92fed48"
|
||||
"tag": "1.17.0",
|
||||
"commit": "fc9b12d3bfaa2d0c04605855b896edb2934c0772"
|
||||
},
|
||||
"_source": "git://github.com/jzaefferer/jquery-validation.git",
|
||||
"_target": ">=1.8",
|
||||
"_originalSource": "jquery-validation"
|
||||
"_source": "https://github.com/jzaefferer/jquery-validation.git",
|
||||
"_target": "^1.17.0",
|
||||
"_originalSource": "jquery-validation",
|
||||
"_direct": true
|
||||
}
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.14.0
|
||||
* jQuery Validation Plugin v1.17.0
|
||||
*
|
||||
* http://jqueryvalidation.org/
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2015 Jörn Zaefferer
|
||||
* Copyright (c) 2017 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
define( ["jquery", "./jquery.validate"], factory );
|
||||
} else if (typeof module === "object" && module.exports) {
|
||||
module.exports = factory( require( "jquery" ) );
|
||||
} else {
|
||||
factory( jQuery );
|
||||
}
|
||||
|
|
@ -17,9 +19,11 @@
|
|||
( function() {
|
||||
|
||||
function stripHtml( value ) {
|
||||
// remove html tags and space chars
|
||||
|
||||
// Remove html tags and space chars
|
||||
return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " )
|
||||
// remove punctuation
|
||||
|
||||
// Remove punctuation
|
||||
.replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
|
||||
}
|
||||
|
||||
|
|
@ -41,10 +45,11 @@
|
|||
|
||||
// Accept a value from a file input based on a required mimetype
|
||||
$.validator.addMethod( "accept", function( value, element, param ) {
|
||||
|
||||
// Split mime on commas in case we have multiple types we can accept
|
||||
var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*",
|
||||
var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
|
||||
optionalValue = this.optional( element ),
|
||||
i, file;
|
||||
i, file, regex;
|
||||
|
||||
// Element is optional
|
||||
if ( optionalValue ) {
|
||||
|
|
@ -52,16 +57,23 @@ $.validator.addMethod("accept", function(value, element, param) {
|
|||
}
|
||||
|
||||
if ( $( element ).attr( "type" ) === "file" ) {
|
||||
// If we are using a wildcard, make it regex friendly
|
||||
typeParam = typeParam.replace(/\*/g, ".*");
|
||||
|
||||
// Escape string to be used in the regex
|
||||
// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
|
||||
// Escape also "/*" as "/.*" as a wildcard
|
||||
typeParam = typeParam
|
||||
.replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
|
||||
.replace( /,/g, "|" )
|
||||
.replace( /\/\*/g, "/.*" );
|
||||
|
||||
// Check if the element has a FileList before checking each file
|
||||
if ( element.files && element.files.length ) {
|
||||
regex = new RegExp( ".?(" + typeParam + ")$", "i" );
|
||||
for ( i = 0; i < element.files.length; i++ ) {
|
||||
file = element.files[ i ];
|
||||
|
||||
// Grab the mimetype from the loaded file, verify it matches
|
||||
if (!file.type.match(new RegExp( "\\.?(" + typeParam + ")$", "i"))) {
|
||||
if ( !file.type.match( regex ) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -90,8 +102,9 @@ $.validator.addMethod("bankaccountNL", function(value, element) {
|
|||
if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
|
||||
return false;
|
||||
}
|
||||
// now '11 check'
|
||||
var account = value.replace(/ /g, ""), // remove spaces
|
||||
|
||||
// Now '11 check'
|
||||
var account = value.replace( / /g, "" ), // Remove spaces
|
||||
sum = 0,
|
||||
len = account.length,
|
||||
pos, factor, digit;
|
||||
|
|
@ -114,49 +127,37 @@ $.validator.addMethod("bankorgiroaccountNL", function(value, element) {
|
|||
*
|
||||
* BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
|
||||
*
|
||||
* Validation is case-insensitive. Please make sure to normalize input yourself.
|
||||
*
|
||||
* BIC definition in detail:
|
||||
* - First 4 characters - bank code (only letters)
|
||||
* - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
|
||||
* - Next 2 characters - location code (letters and digits)
|
||||
* a. shall not start with '0' or '1'
|
||||
* b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant)
|
||||
* b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
|
||||
* - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
|
||||
*/
|
||||
$.validator.addMethod( "bic", function( value, element ) {
|
||||
return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value );
|
||||
return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
|
||||
}, "Please specify a valid BIC code" );
|
||||
|
||||
/*
|
||||
* Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
|
||||
* Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
|
||||
*/
|
||||
$.validator.addMethod( "cifES", function( value ) {
|
||||
"use strict";
|
||||
|
||||
var num = [],
|
||||
controlDigit, sum, i, count, tmp, secondDigit;
|
||||
|
||||
value = value.toUpperCase();
|
||||
|
||||
// Quick format test
|
||||
if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( i = 0; i < 9; i++ ) {
|
||||
num[ i ] = parseInt( value.charAt( i ), 10 );
|
||||
}
|
||||
|
||||
// Algorithm for checking CIF codes
|
||||
sum = num[ 2 ] + num[ 4 ] + num[ 6 ];
|
||||
for ( count = 1; count < 8; count += 2 ) {
|
||||
tmp = ( 2 * num[ count ] ).toString();
|
||||
secondDigit = tmp.charAt( 1 );
|
||||
|
||||
sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) );
|
||||
}
|
||||
|
||||
/* The first (position 1) is a letter following the following criteria:
|
||||
*
|
||||
* Spanish CIF structure:
|
||||
*
|
||||
* [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
|
||||
*
|
||||
* Where:
|
||||
*
|
||||
* T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
|
||||
* P: 2 characters. Province.
|
||||
* N: 5 characters. Secuencial Number within the province.
|
||||
* C: 1 character. Control Digit: [0-9A-J].
|
||||
*
|
||||
* [ T ]: Kind of Organizations. Possible values:
|
||||
*
|
||||
* A. Corporations
|
||||
* B. LLCs
|
||||
* C. General partnerships
|
||||
|
|
@ -176,15 +177,82 @@ $.validator.addMethod( "cifES", function( value ) {
|
|||
* S. Organs of State Administration and regions
|
||||
* V. Agrarian Transformation
|
||||
* W. Permanent establishments of non-resident in Spain
|
||||
*
|
||||
* [ C ]: Control Digit. It can be a number or a letter depending on T value:
|
||||
* [ T ] --> [ C ]
|
||||
* ------ ----------
|
||||
* A Number
|
||||
* B Number
|
||||
* E Number
|
||||
* H Number
|
||||
* K Letter
|
||||
* P Letter
|
||||
* Q Letter
|
||||
* S Letter
|
||||
*
|
||||
*/
|
||||
if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) {
|
||||
sum += "";
|
||||
controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 );
|
||||
value += controlDigit;
|
||||
return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) );
|
||||
$.validator.addMethod( "cifES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
|
||||
var letter = value.substring( 0, 1 ), // [ T ]
|
||||
number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
|
||||
control = value.substring( 8, 9 ), // [ C ]
|
||||
all_sum = 0,
|
||||
even_sum = 0,
|
||||
odd_sum = 0,
|
||||
i, n,
|
||||
control_digit,
|
||||
control_letter;
|
||||
|
||||
function isOdd( n ) {
|
||||
return n % 2 === 0;
|
||||
}
|
||||
|
||||
// Quick format test
|
||||
if ( value.length !== 9 || !cifRegEx.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( i = 0; i < number.length; i++ ) {
|
||||
n = parseInt( number[ i ], 10 );
|
||||
|
||||
// Odd positions
|
||||
if ( isOdd( i ) ) {
|
||||
|
||||
// Odd positions are multiplied first.
|
||||
n *= 2;
|
||||
|
||||
// If the multiplication is bigger than 10 we need to adjust
|
||||
odd_sum += n < 10 ? n : n - 9;
|
||||
|
||||
// Even positions
|
||||
// Just sum them
|
||||
} else {
|
||||
even_sum += n;
|
||||
}
|
||||
}
|
||||
|
||||
all_sum = even_sum + odd_sum;
|
||||
control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
|
||||
control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
|
||||
control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
|
||||
|
||||
// Control must be a digit
|
||||
if ( letter.match( /[ABEH]/ ) ) {
|
||||
return control === control_digit;
|
||||
|
||||
// Control must be a letter
|
||||
} else if ( letter.match( /[KPQS]/ ) ) {
|
||||
return control === control_letter;
|
||||
}
|
||||
|
||||
// Can be either
|
||||
return control === control_digit || control === control_letter;
|
||||
|
||||
}, "Please specify a valid CIF number." );
|
||||
|
||||
|
|
@ -193,6 +261,7 @@ $.validator.addMethod( "cifES", function( value ) {
|
|||
* CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
|
||||
*/
|
||||
$.validator.addMethod( "cpfBR", function( value ) {
|
||||
|
||||
// Removing special characters from value
|
||||
value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
|
||||
|
||||
|
|
@ -209,7 +278,9 @@ $.validator.addMethod("cpfBR", function(value) {
|
|||
|
||||
checkResult = function( sum, cn ) {
|
||||
var result = ( sum * 10 ) % 11;
|
||||
if ((result === 10) || (result === 11)) {result = 0;}
|
||||
if ( ( result === 10 ) || ( result === 11 ) ) {
|
||||
result = 0;
|
||||
}
|
||||
return ( result === cn );
|
||||
};
|
||||
|
||||
|
|
@ -246,6 +317,47 @@ $.validator.addMethod("cpfBR", function(value) {
|
|||
|
||||
}, "Please specify a valid CPF number" );
|
||||
|
||||
// https://jqueryvalidation.org/creditcard-method/
|
||||
// based on https://en.wikipedia.org/wiki/Luhn_algorithm
|
||||
$.validator.addMethod( "creditcard", function( value, element ) {
|
||||
if ( this.optional( element ) ) {
|
||||
return "dependency-mismatch";
|
||||
}
|
||||
|
||||
// Accept only spaces, digits and dashes
|
||||
if ( /[^0-9 \-]+/.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var nCheck = 0,
|
||||
nDigit = 0,
|
||||
bEven = false,
|
||||
n, cDigit;
|
||||
|
||||
value = value.replace( /\D/g, "" );
|
||||
|
||||
// Basing min and max length on
|
||||
// https://developer.ean.com/general_info/Valid_Credit_Card_Types
|
||||
if ( value.length < 13 || value.length > 19 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( n = value.length - 1; n >= 0; n-- ) {
|
||||
cDigit = value.charAt( n );
|
||||
nDigit = parseInt( cDigit, 10 );
|
||||
if ( bEven ) {
|
||||
if ( ( nDigit *= 2 ) > 9 ) {
|
||||
nDigit -= 9;
|
||||
}
|
||||
}
|
||||
|
||||
nCheck += nDigit;
|
||||
bEven = !bEven;
|
||||
}
|
||||
|
||||
return ( nCheck % 10 ) === 0;
|
||||
}, "Please enter a valid credit card number." );
|
||||
|
||||
/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
|
||||
* Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
|
||||
|
|
@ -286,31 +398,31 @@ $.validator.addMethod("creditcardtypes", function(value, element, param) {
|
|||
if ( param.all ) {
|
||||
validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
|
||||
}
|
||||
if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard
|
||||
if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
|
||||
if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex
|
||||
if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub
|
||||
if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
|
||||
return value.length === 14;
|
||||
}
|
||||
if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute
|
||||
if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
|
||||
if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
|
||||
if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
|
||||
if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0080) { //unknown
|
||||
if ( validTypes & 0x0080 ) { // Unknown
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -422,14 +534,17 @@ $.validator.addMethod("giroaccountNL", function(value, element) {
|
|||
/**
|
||||
* IBAN is the international bank account number.
|
||||
* It has a country - specific format, that is checked here too
|
||||
*
|
||||
* Validation is case-insensitive. Please make sure to normalize input yourself.
|
||||
*/
|
||||
$.validator.addMethod( "iban", function( value, element ) {
|
||||
// some quick simple tests to prevent needless work
|
||||
|
||||
// Some quick simple tests to prevent needless work
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// remove spaces and to upper case
|
||||
// Remove spaces and to upper case
|
||||
var iban = value.replace( / /g, "" ).toUpperCase(),
|
||||
ibancheckdigits = "",
|
||||
leadingZeroes = true,
|
||||
|
|
@ -437,7 +552,17 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
cOperator = "",
|
||||
countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
|
||||
|
||||
// check the country code and find the country specific format
|
||||
// Check for IBAN code length.
|
||||
// It contains:
|
||||
// country code ISO 3166-1 - two letters,
|
||||
// two check digits,
|
||||
// Basic Bank Account Number (BBAN) - up to 30 chars
|
||||
var minimalIBANlength = 5;
|
||||
if ( iban.length < minimalIBANlength ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check the country code and find the country specific format
|
||||
countrycode = iban.substring( 0, 2 );
|
||||
bbancountrypatterns = {
|
||||
"AL": "\\d{8}[\\dA-Z]{16}",
|
||||
|
|
@ -507,6 +632,7 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
};
|
||||
|
||||
bbanpattern = bbancountrypatterns[ countrycode ];
|
||||
|
||||
// As new countries will start using IBAN in the
|
||||
// future, we only check if the countrycode is known.
|
||||
// This prevents false negatives, while almost all
|
||||
|
|
@ -517,11 +643,11 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
if ( typeof bbanpattern !== "undefined" ) {
|
||||
ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
|
||||
if ( !( ibanregexp.test( iban ) ) ) {
|
||||
return false; // invalid country specific format
|
||||
return false; // Invalid country specific format
|
||||
}
|
||||
}
|
||||
|
||||
// now check the checksum, first convert to digits
|
||||
// Now check the checksum, first convert to digits
|
||||
ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
|
||||
for ( i = 0; i < ibancheck.length; i++ ) {
|
||||
charAt = ibancheck.charAt( i );
|
||||
|
|
@ -533,7 +659,7 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
}
|
||||
}
|
||||
|
||||
// calculate the result of: ibancheckdigits % 97
|
||||
// Calculate the result of: ibancheckdigits % 97
|
||||
for ( p = 0; p < ibancheckdigits.length; p++ ) {
|
||||
cChar = ibancheckdigits.charAt( p );
|
||||
cOperator = "" + cRest + "" + cChar;
|
||||
|
|
@ -580,47 +706,60 @@ $.validator.addMethod("mobileUK", function(phone_number, element) {
|
|||
phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
|
||||
}, "Please specify a valid mobile number" );
|
||||
|
||||
$.validator.addMethod( "netmask", function( value, element ) {
|
||||
return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
|
||||
}, "Please enter a valid netmask." );
|
||||
|
||||
/*
|
||||
* The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain
|
||||
* The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
|
||||
* authorities to any foreigner.
|
||||
*
|
||||
* The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
|
||||
* identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
|
||||
* companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
|
||||
*/
|
||||
$.validator.addMethod( "nieES", function( value ) {
|
||||
$.validator.addMethod( "nieES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
value = value.toUpperCase();
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Basic format test
|
||||
if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
|
||||
var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
|
||||
var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
|
||||
letter = value.substr( value.length - 1 ).toUpperCase(),
|
||||
number;
|
||||
|
||||
value = value.toString().toUpperCase();
|
||||
|
||||
// Quick format test
|
||||
if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Test NIE
|
||||
//T
|
||||
if ( /^[T]{1}/.test( value ) ) {
|
||||
return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) );
|
||||
}
|
||||
// X means same number
|
||||
// Y means number + 10000000
|
||||
// Z means number + 20000000
|
||||
value = value.replace( /^[X]/, "0" )
|
||||
.replace( /^[Y]/, "1" )
|
||||
.replace( /^[Z]/, "2" );
|
||||
|
||||
//XYZ
|
||||
if ( /^[XYZ]{1}/.test( value ) ) {
|
||||
return (
|
||||
value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt(
|
||||
value.replace( "X", "0" )
|
||||
.replace( "Y", "1" )
|
||||
.replace( "Z", "2" )
|
||||
.substring( 0, 8 ) % 23
|
||||
)
|
||||
);
|
||||
}
|
||||
number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
|
||||
|
||||
return false;
|
||||
return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
|
||||
|
||||
}, "Please specify a valid NIE number." );
|
||||
|
||||
/*
|
||||
* The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
|
||||
*/
|
||||
$.validator.addMethod( "nifES", function( value ) {
|
||||
$.validator.addMethod( "nifES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
value = value.toUpperCase();
|
||||
|
||||
// Basic format test
|
||||
|
|
@ -632,16 +771,40 @@ $.validator.addMethod( "nifES", function( value ) {
|
|||
if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
|
||||
return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
|
||||
}
|
||||
|
||||
// Test specials NIF (starts with K, L or M)
|
||||
if ( /^[KLM]{1}/.test( value ) ) {
|
||||
return ( value[ 8 ] === String.fromCharCode( 64 ) );
|
||||
return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}, "Please specify a valid NIF number." );
|
||||
|
||||
jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) {
|
||||
/*
|
||||
* Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
|
||||
*/
|
||||
$.validator.addMethod( "nipPL", function( value ) {
|
||||
"use strict";
|
||||
|
||||
value = value.replace( /[^0-9]/g, "" );
|
||||
|
||||
if ( value.length !== 10 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
|
||||
var intSum = 0;
|
||||
for ( var i = 0; i < 9; i++ ) {
|
||||
intSum += arrSteps[ i ] * value[ i ];
|
||||
}
|
||||
var int2 = intSum % 11;
|
||||
var intControlNr = ( int2 === 10 ) ? 0 : int2;
|
||||
|
||||
return ( intControlNr === parseInt( value[ 9 ], 10 ) );
|
||||
}, "Please specify a valid NIP number." );
|
||||
|
||||
$.validator.addMethod( "notEqualTo", function( value, element, param ) {
|
||||
return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
|
||||
}, "Please enter a different value, values must not be the same." );
|
||||
|
||||
|
|
@ -679,6 +842,22 @@ $.validator.addMethod("phoneNL", function(value, element) {
|
|||
return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
|
||||
}, "Please specify a valid phone number." );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
* Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
|
||||
* Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
|
||||
* A number of very detailed GB telephone number RegEx patterns can also be found at:
|
||||
* http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
|
||||
*/
|
||||
|
||||
// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
|
||||
$.validator.addMethod( "phonesUK", function( phone_number, element ) {
|
||||
phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
|
||||
return this.optional( element ) || phone_number.length > 9 &&
|
||||
phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
|
||||
}, "Please specify a valid uk phone number" );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
|
|
@ -694,7 +873,7 @@ $.validator.addMethod("phoneUK", function(phone_number, element) {
|
|||
}, "Please specify a valid phone number" );
|
||||
|
||||
/**
|
||||
* matches US phone number format
|
||||
* Matches US phone number format
|
||||
*
|
||||
* where the area code may not start with 1 and the prefix may not start with 1
|
||||
* allows '-' or ' ' as a separator and allows parens around area code
|
||||
|
|
@ -715,20 +894,17 @@ $.validator.addMethod("phoneUS", function(phone_number, element) {
|
|||
phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
|
||||
}, "Please specify a valid phone number" );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
* Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
|
||||
* Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
|
||||
* A number of very detailed GB telephone number RegEx patterns can also be found at:
|
||||
* http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
|
||||
/*
|
||||
* Valida CEPs do brasileiros:
|
||||
*
|
||||
* Formatos aceitos:
|
||||
* 99999-999
|
||||
* 99.999-999
|
||||
* 99999999
|
||||
*/
|
||||
//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
|
||||
$.validator.addMethod("phonesUK", function(phone_number, element) {
|
||||
phone_number = phone_number.replace(/\(|\)|\s+|-/g, "");
|
||||
return this.optional(element) || phone_number.length > 9 &&
|
||||
phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/);
|
||||
}, "Please specify a valid uk phone number");
|
||||
$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
|
||||
return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
|
||||
}, "Informe um CEP válido." );
|
||||
|
||||
/**
|
||||
* Matches a valid Canadian Postal Code
|
||||
|
|
@ -744,21 +920,9 @@ $.validator.addMethod("phonesUK", function(phone_number, element) {
|
|||
* @cat Plugins/Validate/Methods
|
||||
*/
|
||||
$.validator.addMethod( "postalCodeCA", function( value, element ) {
|
||||
return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value );
|
||||
return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
|
||||
}, "Please specify a valid postal code" );
|
||||
|
||||
/*
|
||||
* Valida CEPs do brasileiros:
|
||||
*
|
||||
* Formatos aceitos:
|
||||
* 99999-999
|
||||
* 99.999-999
|
||||
* 99999999
|
||||
*/
|
||||
$.validator.addMethod("postalcodeBR", function(cep_value, element) {
|
||||
return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
|
||||
}, "Informe um CEP válido.");
|
||||
|
||||
/* Matches Italian postcode (CAP) */
|
||||
$.validator.addMethod( "postalcodeIT", function( value, element ) {
|
||||
return this.optional( element ) || /^\d{5}$/.test( value );
|
||||
|
|
@ -888,10 +1052,7 @@ $.validator.addMethod("skip_or_fill_minimum", function(value, element, options)
|
|||
* includeMilitary: true
|
||||
* }
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
$.validator.addMethod( "stateUS", function( value, element, options ) {
|
||||
var isDefault = typeof options === "undefined",
|
||||
caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
|
||||
|
|
@ -911,8 +1072,7 @@ $.validator.addMethod("stateUS", function(value, element, options) {
|
|||
|
||||
regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
|
||||
return this.optional( element ) || regex.test( value );
|
||||
},
|
||||
"Please specify a valid state");
|
||||
}, "Please specify a valid state" );
|
||||
|
||||
// TODO check if value starts with <, otherwise don't try stripping anything
|
||||
$.validator.addMethod( "strippedminlength", function( value, element, param ) {
|
||||
|
|
@ -927,7 +1087,7 @@ $.validator.addMethod("time12h", function(value, element) {
|
|||
return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
|
||||
}, "Please enter a valid time in 12-hour am/pm format" );
|
||||
|
||||
// same as url, but TLD is optional
|
||||
// Same as url, but TLD is optional
|
||||
$.validator.addMethod( "url2", function( value, element ) {
|
||||
return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
|
||||
}, $.validator.messages.url );
|
||||
|
|
@ -994,5 +1154,5 @@ $.validator.addMethod("zipcodeUS", function(value, element) {
|
|||
$.validator.addMethod( "ziprange", function( value, element ) {
|
||||
return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
|
||||
}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
|
||||
|
||||
return $;
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -1,44 +1,15 @@
|
|||
{
|
||||
"name": "jquery-validation-unobtrusive",
|
||||
"version": "3.2.6",
|
||||
"homepage": "https://github.com/aspnet/jquery-validation-unobtrusive",
|
||||
"description": "Add-on to jQuery Validation to enable unobtrusive validation options in data-* attributes.",
|
||||
"main": [
|
||||
"jquery.validate.unobtrusive.js"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"*.json",
|
||||
"*.md",
|
||||
"*.txt",
|
||||
"gulpfile.js"
|
||||
],
|
||||
"keywords": [
|
||||
"jquery",
|
||||
"asp.net",
|
||||
"mvc",
|
||||
"validation",
|
||||
"unobtrusive"
|
||||
],
|
||||
"authors": [
|
||||
"Microsoft"
|
||||
],
|
||||
"license": "http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/aspnet/jquery-validation-unobtrusive.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery-validation": ">=1.8",
|
||||
"jquery": ">=1.8"
|
||||
},
|
||||
"_release": "3.2.6",
|
||||
"version": "3.2.9",
|
||||
"_release": "3.2.9",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v3.2.6",
|
||||
"commit": "13386cd1b5947d8a5d23a12b531ce3960be1eba7"
|
||||
"tag": "v3.2.9",
|
||||
"commit": "a91f5401898e125f10771c5f5f0909d8c4c82396"
|
||||
},
|
||||
"_source": "git://github.com/aspnet/jquery-validation-unobtrusive.git",
|
||||
"_target": "3.2.6",
|
||||
"_originalSource": "jquery-validation-unobtrusive"
|
||||
"_source": "https://github.com/aspnet/jquery-validation-unobtrusive.git",
|
||||
"_target": "^3.2.9",
|
||||
"_originalSource": "jquery-validation-unobtrusive",
|
||||
"_direct": true
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
Copyright (c) .NET Foundation. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
these files except in compliance with the License. You may obtain a copy of the
|
||||
License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed
|
||||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations under the License.
|
||||
|
|
@ -1,12 +1,22 @@
|
|||
/*!
|
||||
** Unobtrusive validation support library for jQuery and jQuery Validate
|
||||
** Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
*/
|
||||
// Unobtrusive validation support library for jQuery and jQuery Validate
|
||||
// Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
// @version v3.2.9
|
||||
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
|
||||
/*global document: false, jQuery: false */
|
||||
|
||||
(function ($) {
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define("jquery.validate.unobtrusive", ['jquery.validation'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// CommonJS-like environments that support module.exports
|
||||
module.exports = factory(require('jquery-validation'));
|
||||
} else {
|
||||
// Browser global
|
||||
jQuery.validator.unobtrusive = factory(jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
var $jQval = $.validator,
|
||||
adapters,
|
||||
data_validation = "unobtrusiveValidation";
|
||||
|
|
@ -118,7 +128,7 @@
|
|||
execInContext = function (name, args) {
|
||||
var func = defaultOptions[name];
|
||||
func && $.isFunction(func) && func.apply(form, args);
|
||||
}
|
||||
};
|
||||
|
||||
if (!result) {
|
||||
result = {
|
||||
|
|
@ -409,8 +419,13 @@
|
|||
setValidationValues(options, "regex", options.params.regex);
|
||||
}
|
||||
});
|
||||
adapters.add("fileextensions", ["extensions"], function (options) {
|
||||
setValidationValues(options, "extension", options.params.extensions);
|
||||
});
|
||||
|
||||
$(function () {
|
||||
$jQval.unobtrusive.parse(document);
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
return $jQval.unobtrusive;
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "jquery-validation",
|
||||
"homepage": "http://jqueryvalidation.org/",
|
||||
"homepage": "https://jqueryvalidation.org/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/jzaefferer/jquery-validation.git"
|
||||
"url": "git://github.com/jquery-validation/jquery-validation.git"
|
||||
},
|
||||
"authors": [
|
||||
"Jörn Zaefferer <joern.zaefferer@gmail.com>"
|
||||
|
|
@ -27,14 +27,15 @@
|
|||
"dependencies": {
|
||||
"jquery": ">= 1.7.2"
|
||||
},
|
||||
"version": "1.14.0",
|
||||
"_release": "1.14.0",
|
||||
"version": "1.17.0",
|
||||
"_release": "1.17.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.14.0",
|
||||
"commit": "c1343fb9823392aa9acbe1c3ffd337b8c92fed48"
|
||||
"tag": "1.17.0",
|
||||
"commit": "fc9b12d3bfaa2d0c04605855b896edb2934c0772"
|
||||
},
|
||||
"_source": "git://github.com/jzaefferer/jquery-validation.git",
|
||||
"_target": ">=1.8",
|
||||
"_originalSource": "jquery-validation"
|
||||
"_source": "https://github.com/jzaefferer/jquery-validation.git",
|
||||
"_target": "^1.17.0",
|
||||
"_originalSource": "jquery-validation",
|
||||
"_direct": true
|
||||
}
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.14.0
|
||||
* jQuery Validation Plugin v1.17.0
|
||||
*
|
||||
* http://jqueryvalidation.org/
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2015 Jörn Zaefferer
|
||||
* Copyright (c) 2017 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
define( ["jquery", "./jquery.validate"], factory );
|
||||
} else if (typeof module === "object" && module.exports) {
|
||||
module.exports = factory( require( "jquery" ) );
|
||||
} else {
|
||||
factory( jQuery );
|
||||
}
|
||||
|
|
@ -17,9 +19,11 @@
|
|||
( function() {
|
||||
|
||||
function stripHtml( value ) {
|
||||
// remove html tags and space chars
|
||||
|
||||
// Remove html tags and space chars
|
||||
return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " )
|
||||
// remove punctuation
|
||||
|
||||
// Remove punctuation
|
||||
.replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
|
||||
}
|
||||
|
||||
|
|
@ -41,10 +45,11 @@
|
|||
|
||||
// Accept a value from a file input based on a required mimetype
|
||||
$.validator.addMethod( "accept", function( value, element, param ) {
|
||||
|
||||
// Split mime on commas in case we have multiple types we can accept
|
||||
var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*",
|
||||
var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
|
||||
optionalValue = this.optional( element ),
|
||||
i, file;
|
||||
i, file, regex;
|
||||
|
||||
// Element is optional
|
||||
if ( optionalValue ) {
|
||||
|
|
@ -52,16 +57,23 @@ $.validator.addMethod("accept", function(value, element, param) {
|
|||
}
|
||||
|
||||
if ( $( element ).attr( "type" ) === "file" ) {
|
||||
// If we are using a wildcard, make it regex friendly
|
||||
typeParam = typeParam.replace(/\*/g, ".*");
|
||||
|
||||
// Escape string to be used in the regex
|
||||
// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
|
||||
// Escape also "/*" as "/.*" as a wildcard
|
||||
typeParam = typeParam
|
||||
.replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
|
||||
.replace( /,/g, "|" )
|
||||
.replace( /\/\*/g, "/.*" );
|
||||
|
||||
// Check if the element has a FileList before checking each file
|
||||
if ( element.files && element.files.length ) {
|
||||
regex = new RegExp( ".?(" + typeParam + ")$", "i" );
|
||||
for ( i = 0; i < element.files.length; i++ ) {
|
||||
file = element.files[ i ];
|
||||
|
||||
// Grab the mimetype from the loaded file, verify it matches
|
||||
if (!file.type.match(new RegExp( "\\.?(" + typeParam + ")$", "i"))) {
|
||||
if ( !file.type.match( regex ) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -90,8 +102,9 @@ $.validator.addMethod("bankaccountNL", function(value, element) {
|
|||
if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
|
||||
return false;
|
||||
}
|
||||
// now '11 check'
|
||||
var account = value.replace(/ /g, ""), // remove spaces
|
||||
|
||||
// Now '11 check'
|
||||
var account = value.replace( / /g, "" ), // Remove spaces
|
||||
sum = 0,
|
||||
len = account.length,
|
||||
pos, factor, digit;
|
||||
|
|
@ -114,49 +127,37 @@ $.validator.addMethod("bankorgiroaccountNL", function(value, element) {
|
|||
*
|
||||
* BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
|
||||
*
|
||||
* Validation is case-insensitive. Please make sure to normalize input yourself.
|
||||
*
|
||||
* BIC definition in detail:
|
||||
* - First 4 characters - bank code (only letters)
|
||||
* - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
|
||||
* - Next 2 characters - location code (letters and digits)
|
||||
* a. shall not start with '0' or '1'
|
||||
* b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant)
|
||||
* b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
|
||||
* - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
|
||||
*/
|
||||
$.validator.addMethod( "bic", function( value, element ) {
|
||||
return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value );
|
||||
return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
|
||||
}, "Please specify a valid BIC code" );
|
||||
|
||||
/*
|
||||
* Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
|
||||
* Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
|
||||
*/
|
||||
$.validator.addMethod( "cifES", function( value ) {
|
||||
"use strict";
|
||||
|
||||
var num = [],
|
||||
controlDigit, sum, i, count, tmp, secondDigit;
|
||||
|
||||
value = value.toUpperCase();
|
||||
|
||||
// Quick format test
|
||||
if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( i = 0; i < 9; i++ ) {
|
||||
num[ i ] = parseInt( value.charAt( i ), 10 );
|
||||
}
|
||||
|
||||
// Algorithm for checking CIF codes
|
||||
sum = num[ 2 ] + num[ 4 ] + num[ 6 ];
|
||||
for ( count = 1; count < 8; count += 2 ) {
|
||||
tmp = ( 2 * num[ count ] ).toString();
|
||||
secondDigit = tmp.charAt( 1 );
|
||||
|
||||
sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) );
|
||||
}
|
||||
|
||||
/* The first (position 1) is a letter following the following criteria:
|
||||
*
|
||||
* Spanish CIF structure:
|
||||
*
|
||||
* [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
|
||||
*
|
||||
* Where:
|
||||
*
|
||||
* T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
|
||||
* P: 2 characters. Province.
|
||||
* N: 5 characters. Secuencial Number within the province.
|
||||
* C: 1 character. Control Digit: [0-9A-J].
|
||||
*
|
||||
* [ T ]: Kind of Organizations. Possible values:
|
||||
*
|
||||
* A. Corporations
|
||||
* B. LLCs
|
||||
* C. General partnerships
|
||||
|
|
@ -176,15 +177,82 @@ $.validator.addMethod( "cifES", function( value ) {
|
|||
* S. Organs of State Administration and regions
|
||||
* V. Agrarian Transformation
|
||||
* W. Permanent establishments of non-resident in Spain
|
||||
*
|
||||
* [ C ]: Control Digit. It can be a number or a letter depending on T value:
|
||||
* [ T ] --> [ C ]
|
||||
* ------ ----------
|
||||
* A Number
|
||||
* B Number
|
||||
* E Number
|
||||
* H Number
|
||||
* K Letter
|
||||
* P Letter
|
||||
* Q Letter
|
||||
* S Letter
|
||||
*
|
||||
*/
|
||||
if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) {
|
||||
sum += "";
|
||||
controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 );
|
||||
value += controlDigit;
|
||||
return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) );
|
||||
$.validator.addMethod( "cifES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
|
||||
var letter = value.substring( 0, 1 ), // [ T ]
|
||||
number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
|
||||
control = value.substring( 8, 9 ), // [ C ]
|
||||
all_sum = 0,
|
||||
even_sum = 0,
|
||||
odd_sum = 0,
|
||||
i, n,
|
||||
control_digit,
|
||||
control_letter;
|
||||
|
||||
function isOdd( n ) {
|
||||
return n % 2 === 0;
|
||||
}
|
||||
|
||||
// Quick format test
|
||||
if ( value.length !== 9 || !cifRegEx.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( i = 0; i < number.length; i++ ) {
|
||||
n = parseInt( number[ i ], 10 );
|
||||
|
||||
// Odd positions
|
||||
if ( isOdd( i ) ) {
|
||||
|
||||
// Odd positions are multiplied first.
|
||||
n *= 2;
|
||||
|
||||
// If the multiplication is bigger than 10 we need to adjust
|
||||
odd_sum += n < 10 ? n : n - 9;
|
||||
|
||||
// Even positions
|
||||
// Just sum them
|
||||
} else {
|
||||
even_sum += n;
|
||||
}
|
||||
}
|
||||
|
||||
all_sum = even_sum + odd_sum;
|
||||
control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
|
||||
control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
|
||||
control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
|
||||
|
||||
// Control must be a digit
|
||||
if ( letter.match( /[ABEH]/ ) ) {
|
||||
return control === control_digit;
|
||||
|
||||
// Control must be a letter
|
||||
} else if ( letter.match( /[KPQS]/ ) ) {
|
||||
return control === control_letter;
|
||||
}
|
||||
|
||||
// Can be either
|
||||
return control === control_digit || control === control_letter;
|
||||
|
||||
}, "Please specify a valid CIF number." );
|
||||
|
||||
|
|
@ -193,6 +261,7 @@ $.validator.addMethod( "cifES", function( value ) {
|
|||
* CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
|
||||
*/
|
||||
$.validator.addMethod( "cpfBR", function( value ) {
|
||||
|
||||
// Removing special characters from value
|
||||
value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
|
||||
|
||||
|
|
@ -209,7 +278,9 @@ $.validator.addMethod("cpfBR", function(value) {
|
|||
|
||||
checkResult = function( sum, cn ) {
|
||||
var result = ( sum * 10 ) % 11;
|
||||
if ((result === 10) || (result === 11)) {result = 0;}
|
||||
if ( ( result === 10 ) || ( result === 11 ) ) {
|
||||
result = 0;
|
||||
}
|
||||
return ( result === cn );
|
||||
};
|
||||
|
||||
|
|
@ -246,6 +317,47 @@ $.validator.addMethod("cpfBR", function(value) {
|
|||
|
||||
}, "Please specify a valid CPF number" );
|
||||
|
||||
// https://jqueryvalidation.org/creditcard-method/
|
||||
// based on https://en.wikipedia.org/wiki/Luhn_algorithm
|
||||
$.validator.addMethod( "creditcard", function( value, element ) {
|
||||
if ( this.optional( element ) ) {
|
||||
return "dependency-mismatch";
|
||||
}
|
||||
|
||||
// Accept only spaces, digits and dashes
|
||||
if ( /[^0-9 \-]+/.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var nCheck = 0,
|
||||
nDigit = 0,
|
||||
bEven = false,
|
||||
n, cDigit;
|
||||
|
||||
value = value.replace( /\D/g, "" );
|
||||
|
||||
// Basing min and max length on
|
||||
// https://developer.ean.com/general_info/Valid_Credit_Card_Types
|
||||
if ( value.length < 13 || value.length > 19 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( n = value.length - 1; n >= 0; n-- ) {
|
||||
cDigit = value.charAt( n );
|
||||
nDigit = parseInt( cDigit, 10 );
|
||||
if ( bEven ) {
|
||||
if ( ( nDigit *= 2 ) > 9 ) {
|
||||
nDigit -= 9;
|
||||
}
|
||||
}
|
||||
|
||||
nCheck += nDigit;
|
||||
bEven = !bEven;
|
||||
}
|
||||
|
||||
return ( nCheck % 10 ) === 0;
|
||||
}, "Please enter a valid credit card number." );
|
||||
|
||||
/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
|
||||
* Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
|
||||
|
|
@ -286,31 +398,31 @@ $.validator.addMethod("creditcardtypes", function(value, element, param) {
|
|||
if ( param.all ) {
|
||||
validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
|
||||
}
|
||||
if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard
|
||||
if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
|
||||
if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex
|
||||
if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub
|
||||
if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
|
||||
return value.length === 14;
|
||||
}
|
||||
if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute
|
||||
if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
|
||||
if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
|
||||
if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
|
||||
if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0080) { //unknown
|
||||
if ( validTypes & 0x0080 ) { // Unknown
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -422,14 +534,17 @@ $.validator.addMethod("giroaccountNL", function(value, element) {
|
|||
/**
|
||||
* IBAN is the international bank account number.
|
||||
* It has a country - specific format, that is checked here too
|
||||
*
|
||||
* Validation is case-insensitive. Please make sure to normalize input yourself.
|
||||
*/
|
||||
$.validator.addMethod( "iban", function( value, element ) {
|
||||
// some quick simple tests to prevent needless work
|
||||
|
||||
// Some quick simple tests to prevent needless work
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// remove spaces and to upper case
|
||||
// Remove spaces and to upper case
|
||||
var iban = value.replace( / /g, "" ).toUpperCase(),
|
||||
ibancheckdigits = "",
|
||||
leadingZeroes = true,
|
||||
|
|
@ -437,7 +552,17 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
cOperator = "",
|
||||
countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
|
||||
|
||||
// check the country code and find the country specific format
|
||||
// Check for IBAN code length.
|
||||
// It contains:
|
||||
// country code ISO 3166-1 - two letters,
|
||||
// two check digits,
|
||||
// Basic Bank Account Number (BBAN) - up to 30 chars
|
||||
var minimalIBANlength = 5;
|
||||
if ( iban.length < minimalIBANlength ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check the country code and find the country specific format
|
||||
countrycode = iban.substring( 0, 2 );
|
||||
bbancountrypatterns = {
|
||||
"AL": "\\d{8}[\\dA-Z]{16}",
|
||||
|
|
@ -507,6 +632,7 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
};
|
||||
|
||||
bbanpattern = bbancountrypatterns[ countrycode ];
|
||||
|
||||
// As new countries will start using IBAN in the
|
||||
// future, we only check if the countrycode is known.
|
||||
// This prevents false negatives, while almost all
|
||||
|
|
@ -517,11 +643,11 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
if ( typeof bbanpattern !== "undefined" ) {
|
||||
ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
|
||||
if ( !( ibanregexp.test( iban ) ) ) {
|
||||
return false; // invalid country specific format
|
||||
return false; // Invalid country specific format
|
||||
}
|
||||
}
|
||||
|
||||
// now check the checksum, first convert to digits
|
||||
// Now check the checksum, first convert to digits
|
||||
ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
|
||||
for ( i = 0; i < ibancheck.length; i++ ) {
|
||||
charAt = ibancheck.charAt( i );
|
||||
|
|
@ -533,7 +659,7 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
}
|
||||
}
|
||||
|
||||
// calculate the result of: ibancheckdigits % 97
|
||||
// Calculate the result of: ibancheckdigits % 97
|
||||
for ( p = 0; p < ibancheckdigits.length; p++ ) {
|
||||
cChar = ibancheckdigits.charAt( p );
|
||||
cOperator = "" + cRest + "" + cChar;
|
||||
|
|
@ -580,47 +706,60 @@ $.validator.addMethod("mobileUK", function(phone_number, element) {
|
|||
phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
|
||||
}, "Please specify a valid mobile number" );
|
||||
|
||||
$.validator.addMethod( "netmask", function( value, element ) {
|
||||
return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
|
||||
}, "Please enter a valid netmask." );
|
||||
|
||||
/*
|
||||
* The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain
|
||||
* The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
|
||||
* authorities to any foreigner.
|
||||
*
|
||||
* The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
|
||||
* identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
|
||||
* companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
|
||||
*/
|
||||
$.validator.addMethod( "nieES", function( value ) {
|
||||
$.validator.addMethod( "nieES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
value = value.toUpperCase();
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Basic format test
|
||||
if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
|
||||
var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
|
||||
var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
|
||||
letter = value.substr( value.length - 1 ).toUpperCase(),
|
||||
number;
|
||||
|
||||
value = value.toString().toUpperCase();
|
||||
|
||||
// Quick format test
|
||||
if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Test NIE
|
||||
//T
|
||||
if ( /^[T]{1}/.test( value ) ) {
|
||||
return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) );
|
||||
}
|
||||
// X means same number
|
||||
// Y means number + 10000000
|
||||
// Z means number + 20000000
|
||||
value = value.replace( /^[X]/, "0" )
|
||||
.replace( /^[Y]/, "1" )
|
||||
.replace( /^[Z]/, "2" );
|
||||
|
||||
//XYZ
|
||||
if ( /^[XYZ]{1}/.test( value ) ) {
|
||||
return (
|
||||
value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt(
|
||||
value.replace( "X", "0" )
|
||||
.replace( "Y", "1" )
|
||||
.replace( "Z", "2" )
|
||||
.substring( 0, 8 ) % 23
|
||||
)
|
||||
);
|
||||
}
|
||||
number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
|
||||
|
||||
return false;
|
||||
return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
|
||||
|
||||
}, "Please specify a valid NIE number." );
|
||||
|
||||
/*
|
||||
* The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
|
||||
*/
|
||||
$.validator.addMethod( "nifES", function( value ) {
|
||||
$.validator.addMethod( "nifES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
value = value.toUpperCase();
|
||||
|
||||
// Basic format test
|
||||
|
|
@ -632,16 +771,40 @@ $.validator.addMethod( "nifES", function( value ) {
|
|||
if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
|
||||
return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
|
||||
}
|
||||
|
||||
// Test specials NIF (starts with K, L or M)
|
||||
if ( /^[KLM]{1}/.test( value ) ) {
|
||||
return ( value[ 8 ] === String.fromCharCode( 64 ) );
|
||||
return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}, "Please specify a valid NIF number." );
|
||||
|
||||
jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) {
|
||||
/*
|
||||
* Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
|
||||
*/
|
||||
$.validator.addMethod( "nipPL", function( value ) {
|
||||
"use strict";
|
||||
|
||||
value = value.replace( /[^0-9]/g, "" );
|
||||
|
||||
if ( value.length !== 10 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
|
||||
var intSum = 0;
|
||||
for ( var i = 0; i < 9; i++ ) {
|
||||
intSum += arrSteps[ i ] * value[ i ];
|
||||
}
|
||||
var int2 = intSum % 11;
|
||||
var intControlNr = ( int2 === 10 ) ? 0 : int2;
|
||||
|
||||
return ( intControlNr === parseInt( value[ 9 ], 10 ) );
|
||||
}, "Please specify a valid NIP number." );
|
||||
|
||||
$.validator.addMethod( "notEqualTo", function( value, element, param ) {
|
||||
return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
|
||||
}, "Please enter a different value, values must not be the same." );
|
||||
|
||||
|
|
@ -679,6 +842,22 @@ $.validator.addMethod("phoneNL", function(value, element) {
|
|||
return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
|
||||
}, "Please specify a valid phone number." );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
* Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
|
||||
* Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
|
||||
* A number of very detailed GB telephone number RegEx patterns can also be found at:
|
||||
* http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
|
||||
*/
|
||||
|
||||
// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
|
||||
$.validator.addMethod( "phonesUK", function( phone_number, element ) {
|
||||
phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
|
||||
return this.optional( element ) || phone_number.length > 9 &&
|
||||
phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
|
||||
}, "Please specify a valid uk phone number" );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
|
|
@ -694,7 +873,7 @@ $.validator.addMethod("phoneUK", function(phone_number, element) {
|
|||
}, "Please specify a valid phone number" );
|
||||
|
||||
/**
|
||||
* matches US phone number format
|
||||
* Matches US phone number format
|
||||
*
|
||||
* where the area code may not start with 1 and the prefix may not start with 1
|
||||
* allows '-' or ' ' as a separator and allows parens around area code
|
||||
|
|
@ -715,20 +894,17 @@ $.validator.addMethod("phoneUS", function(phone_number, element) {
|
|||
phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
|
||||
}, "Please specify a valid phone number" );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
* Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
|
||||
* Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
|
||||
* A number of very detailed GB telephone number RegEx patterns can also be found at:
|
||||
* http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
|
||||
/*
|
||||
* Valida CEPs do brasileiros:
|
||||
*
|
||||
* Formatos aceitos:
|
||||
* 99999-999
|
||||
* 99.999-999
|
||||
* 99999999
|
||||
*/
|
||||
//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
|
||||
$.validator.addMethod("phonesUK", function(phone_number, element) {
|
||||
phone_number = phone_number.replace(/\(|\)|\s+|-/g, "");
|
||||
return this.optional(element) || phone_number.length > 9 &&
|
||||
phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/);
|
||||
}, "Please specify a valid uk phone number");
|
||||
$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
|
||||
return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
|
||||
}, "Informe um CEP válido." );
|
||||
|
||||
/**
|
||||
* Matches a valid Canadian Postal Code
|
||||
|
|
@ -744,21 +920,9 @@ $.validator.addMethod("phonesUK", function(phone_number, element) {
|
|||
* @cat Plugins/Validate/Methods
|
||||
*/
|
||||
$.validator.addMethod( "postalCodeCA", function( value, element ) {
|
||||
return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value );
|
||||
return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
|
||||
}, "Please specify a valid postal code" );
|
||||
|
||||
/*
|
||||
* Valida CEPs do brasileiros:
|
||||
*
|
||||
* Formatos aceitos:
|
||||
* 99999-999
|
||||
* 99.999-999
|
||||
* 99999999
|
||||
*/
|
||||
$.validator.addMethod("postalcodeBR", function(cep_value, element) {
|
||||
return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
|
||||
}, "Informe um CEP válido.");
|
||||
|
||||
/* Matches Italian postcode (CAP) */
|
||||
$.validator.addMethod( "postalcodeIT", function( value, element ) {
|
||||
return this.optional( element ) || /^\d{5}$/.test( value );
|
||||
|
|
@ -888,10 +1052,7 @@ $.validator.addMethod("skip_or_fill_minimum", function(value, element, options)
|
|||
* includeMilitary: true
|
||||
* }
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
$.validator.addMethod( "stateUS", function( value, element, options ) {
|
||||
var isDefault = typeof options === "undefined",
|
||||
caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
|
||||
|
|
@ -911,8 +1072,7 @@ $.validator.addMethod("stateUS", function(value, element, options) {
|
|||
|
||||
regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
|
||||
return this.optional( element ) || regex.test( value );
|
||||
},
|
||||
"Please specify a valid state");
|
||||
}, "Please specify a valid state" );
|
||||
|
||||
// TODO check if value starts with <, otherwise don't try stripping anything
|
||||
$.validator.addMethod( "strippedminlength", function( value, element, param ) {
|
||||
|
|
@ -927,7 +1087,7 @@ $.validator.addMethod("time12h", function(value, element) {
|
|||
return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
|
||||
}, "Please enter a valid time in 12-hour am/pm format" );
|
||||
|
||||
// same as url, but TLD is optional
|
||||
// Same as url, but TLD is optional
|
||||
$.validator.addMethod( "url2", function( value, element ) {
|
||||
return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
|
||||
}, $.validator.messages.url );
|
||||
|
|
@ -994,5 +1154,5 @@ $.validator.addMethod("zipcodeUS", function(value, element) {
|
|||
$.validator.addMethod( "ziprange", function( value, element ) {
|
||||
return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
|
||||
}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
|
||||
|
||||
return $;
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -1,44 +1,15 @@
|
|||
{
|
||||
"name": "jquery-validation-unobtrusive",
|
||||
"version": "3.2.6",
|
||||
"homepage": "https://github.com/aspnet/jquery-validation-unobtrusive",
|
||||
"description": "Add-on to jQuery Validation to enable unobtrusive validation options in data-* attributes.",
|
||||
"main": [
|
||||
"jquery.validate.unobtrusive.js"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"*.json",
|
||||
"*.md",
|
||||
"*.txt",
|
||||
"gulpfile.js"
|
||||
],
|
||||
"keywords": [
|
||||
"jquery",
|
||||
"asp.net",
|
||||
"mvc",
|
||||
"validation",
|
||||
"unobtrusive"
|
||||
],
|
||||
"authors": [
|
||||
"Microsoft"
|
||||
],
|
||||
"license": "http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/aspnet/jquery-validation-unobtrusive.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery-validation": ">=1.8",
|
||||
"jquery": ">=1.8"
|
||||
},
|
||||
"_release": "3.2.6",
|
||||
"version": "3.2.9",
|
||||
"_release": "3.2.9",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v3.2.6",
|
||||
"commit": "13386cd1b5947d8a5d23a12b531ce3960be1eba7"
|
||||
"tag": "v3.2.9",
|
||||
"commit": "a91f5401898e125f10771c5f5f0909d8c4c82396"
|
||||
},
|
||||
"_source": "git://github.com/aspnet/jquery-validation-unobtrusive.git",
|
||||
"_target": "3.2.6",
|
||||
"_originalSource": "jquery-validation-unobtrusive"
|
||||
"_source": "https://github.com/aspnet/jquery-validation-unobtrusive.git",
|
||||
"_target": "^3.2.9",
|
||||
"_originalSource": "jquery-validation-unobtrusive",
|
||||
"_direct": true
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
Copyright (c) .NET Foundation. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
these files except in compliance with the License. You may obtain a copy of the
|
||||
License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed
|
||||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations under the License.
|
||||
|
|
@ -1,12 +1,22 @@
|
|||
/*!
|
||||
** Unobtrusive validation support library for jQuery and jQuery Validate
|
||||
** Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
*/
|
||||
// Unobtrusive validation support library for jQuery and jQuery Validate
|
||||
// Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
// @version v3.2.9
|
||||
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
|
||||
/*global document: false, jQuery: false */
|
||||
|
||||
(function ($) {
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define("jquery.validate.unobtrusive", ['jquery.validation'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// CommonJS-like environments that support module.exports
|
||||
module.exports = factory(require('jquery-validation'));
|
||||
} else {
|
||||
// Browser global
|
||||
jQuery.validator.unobtrusive = factory(jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
var $jQval = $.validator,
|
||||
adapters,
|
||||
data_validation = "unobtrusiveValidation";
|
||||
|
|
@ -118,7 +128,7 @@
|
|||
execInContext = function (name, args) {
|
||||
var func = defaultOptions[name];
|
||||
func && $.isFunction(func) && func.apply(form, args);
|
||||
}
|
||||
};
|
||||
|
||||
if (!result) {
|
||||
result = {
|
||||
|
|
@ -409,8 +419,13 @@
|
|||
setValidationValues(options, "regex", options.params.regex);
|
||||
}
|
||||
});
|
||||
adapters.add("fileextensions", ["extensions"], function (options) {
|
||||
setValidationValues(options, "extension", options.params.extensions);
|
||||
});
|
||||
|
||||
$(function () {
|
||||
$jQval.unobtrusive.parse(document);
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
return $jQval.unobtrusive;
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "jquery-validation",
|
||||
"homepage": "http://jqueryvalidation.org/",
|
||||
"homepage": "https://jqueryvalidation.org/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/jzaefferer/jquery-validation.git"
|
||||
"url": "git://github.com/jquery-validation/jquery-validation.git"
|
||||
},
|
||||
"authors": [
|
||||
"Jörn Zaefferer <joern.zaefferer@gmail.com>"
|
||||
|
|
@ -27,14 +27,15 @@
|
|||
"dependencies": {
|
||||
"jquery": ">= 1.7.2"
|
||||
},
|
||||
"version": "1.14.0",
|
||||
"_release": "1.14.0",
|
||||
"version": "1.17.0",
|
||||
"_release": "1.17.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.14.0",
|
||||
"commit": "c1343fb9823392aa9acbe1c3ffd337b8c92fed48"
|
||||
"tag": "1.17.0",
|
||||
"commit": "fc9b12d3bfaa2d0c04605855b896edb2934c0772"
|
||||
},
|
||||
"_source": "git://github.com/jzaefferer/jquery-validation.git",
|
||||
"_target": ">=1.8",
|
||||
"_originalSource": "jquery-validation"
|
||||
"_source": "https://github.com/jzaefferer/jquery-validation.git",
|
||||
"_target": "^1.17.0",
|
||||
"_originalSource": "jquery-validation",
|
||||
"_direct": true
|
||||
}
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.14.0
|
||||
* jQuery Validation Plugin v1.17.0
|
||||
*
|
||||
* http://jqueryvalidation.org/
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2015 Jörn Zaefferer
|
||||
* Copyright (c) 2017 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
define( ["jquery", "./jquery.validate"], factory );
|
||||
} else if (typeof module === "object" && module.exports) {
|
||||
module.exports = factory( require( "jquery" ) );
|
||||
} else {
|
||||
factory( jQuery );
|
||||
}
|
||||
|
|
@ -17,9 +19,11 @@
|
|||
( function() {
|
||||
|
||||
function stripHtml( value ) {
|
||||
// remove html tags and space chars
|
||||
|
||||
// Remove html tags and space chars
|
||||
return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " )
|
||||
// remove punctuation
|
||||
|
||||
// Remove punctuation
|
||||
.replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
|
||||
}
|
||||
|
||||
|
|
@ -41,10 +45,11 @@
|
|||
|
||||
// Accept a value from a file input based on a required mimetype
|
||||
$.validator.addMethod( "accept", function( value, element, param ) {
|
||||
|
||||
// Split mime on commas in case we have multiple types we can accept
|
||||
var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*",
|
||||
var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
|
||||
optionalValue = this.optional( element ),
|
||||
i, file;
|
||||
i, file, regex;
|
||||
|
||||
// Element is optional
|
||||
if ( optionalValue ) {
|
||||
|
|
@ -52,16 +57,23 @@ $.validator.addMethod("accept", function(value, element, param) {
|
|||
}
|
||||
|
||||
if ( $( element ).attr( "type" ) === "file" ) {
|
||||
// If we are using a wildcard, make it regex friendly
|
||||
typeParam = typeParam.replace(/\*/g, ".*");
|
||||
|
||||
// Escape string to be used in the regex
|
||||
// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
|
||||
// Escape also "/*" as "/.*" as a wildcard
|
||||
typeParam = typeParam
|
||||
.replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
|
||||
.replace( /,/g, "|" )
|
||||
.replace( /\/\*/g, "/.*" );
|
||||
|
||||
// Check if the element has a FileList before checking each file
|
||||
if ( element.files && element.files.length ) {
|
||||
regex = new RegExp( ".?(" + typeParam + ")$", "i" );
|
||||
for ( i = 0; i < element.files.length; i++ ) {
|
||||
file = element.files[ i ];
|
||||
|
||||
// Grab the mimetype from the loaded file, verify it matches
|
||||
if (!file.type.match(new RegExp( "\\.?(" + typeParam + ")$", "i"))) {
|
||||
if ( !file.type.match( regex ) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -90,8 +102,9 @@ $.validator.addMethod("bankaccountNL", function(value, element) {
|
|||
if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
|
||||
return false;
|
||||
}
|
||||
// now '11 check'
|
||||
var account = value.replace(/ /g, ""), // remove spaces
|
||||
|
||||
// Now '11 check'
|
||||
var account = value.replace( / /g, "" ), // Remove spaces
|
||||
sum = 0,
|
||||
len = account.length,
|
||||
pos, factor, digit;
|
||||
|
|
@ -114,49 +127,37 @@ $.validator.addMethod("bankorgiroaccountNL", function(value, element) {
|
|||
*
|
||||
* BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
|
||||
*
|
||||
* Validation is case-insensitive. Please make sure to normalize input yourself.
|
||||
*
|
||||
* BIC definition in detail:
|
||||
* - First 4 characters - bank code (only letters)
|
||||
* - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
|
||||
* - Next 2 characters - location code (letters and digits)
|
||||
* a. shall not start with '0' or '1'
|
||||
* b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant)
|
||||
* b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
|
||||
* - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
|
||||
*/
|
||||
$.validator.addMethod( "bic", function( value, element ) {
|
||||
return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value );
|
||||
return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
|
||||
}, "Please specify a valid BIC code" );
|
||||
|
||||
/*
|
||||
* Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
|
||||
* Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
|
||||
*/
|
||||
$.validator.addMethod( "cifES", function( value ) {
|
||||
"use strict";
|
||||
|
||||
var num = [],
|
||||
controlDigit, sum, i, count, tmp, secondDigit;
|
||||
|
||||
value = value.toUpperCase();
|
||||
|
||||
// Quick format test
|
||||
if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( i = 0; i < 9; i++ ) {
|
||||
num[ i ] = parseInt( value.charAt( i ), 10 );
|
||||
}
|
||||
|
||||
// Algorithm for checking CIF codes
|
||||
sum = num[ 2 ] + num[ 4 ] + num[ 6 ];
|
||||
for ( count = 1; count < 8; count += 2 ) {
|
||||
tmp = ( 2 * num[ count ] ).toString();
|
||||
secondDigit = tmp.charAt( 1 );
|
||||
|
||||
sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) );
|
||||
}
|
||||
|
||||
/* The first (position 1) is a letter following the following criteria:
|
||||
*
|
||||
* Spanish CIF structure:
|
||||
*
|
||||
* [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
|
||||
*
|
||||
* Where:
|
||||
*
|
||||
* T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
|
||||
* P: 2 characters. Province.
|
||||
* N: 5 characters. Secuencial Number within the province.
|
||||
* C: 1 character. Control Digit: [0-9A-J].
|
||||
*
|
||||
* [ T ]: Kind of Organizations. Possible values:
|
||||
*
|
||||
* A. Corporations
|
||||
* B. LLCs
|
||||
* C. General partnerships
|
||||
|
|
@ -176,15 +177,82 @@ $.validator.addMethod( "cifES", function( value ) {
|
|||
* S. Organs of State Administration and regions
|
||||
* V. Agrarian Transformation
|
||||
* W. Permanent establishments of non-resident in Spain
|
||||
*
|
||||
* [ C ]: Control Digit. It can be a number or a letter depending on T value:
|
||||
* [ T ] --> [ C ]
|
||||
* ------ ----------
|
||||
* A Number
|
||||
* B Number
|
||||
* E Number
|
||||
* H Number
|
||||
* K Letter
|
||||
* P Letter
|
||||
* Q Letter
|
||||
* S Letter
|
||||
*
|
||||
*/
|
||||
if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) {
|
||||
sum += "";
|
||||
controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 );
|
||||
value += controlDigit;
|
||||
return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) );
|
||||
$.validator.addMethod( "cifES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
|
||||
var letter = value.substring( 0, 1 ), // [ T ]
|
||||
number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
|
||||
control = value.substring( 8, 9 ), // [ C ]
|
||||
all_sum = 0,
|
||||
even_sum = 0,
|
||||
odd_sum = 0,
|
||||
i, n,
|
||||
control_digit,
|
||||
control_letter;
|
||||
|
||||
function isOdd( n ) {
|
||||
return n % 2 === 0;
|
||||
}
|
||||
|
||||
// Quick format test
|
||||
if ( value.length !== 9 || !cifRegEx.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( i = 0; i < number.length; i++ ) {
|
||||
n = parseInt( number[ i ], 10 );
|
||||
|
||||
// Odd positions
|
||||
if ( isOdd( i ) ) {
|
||||
|
||||
// Odd positions are multiplied first.
|
||||
n *= 2;
|
||||
|
||||
// If the multiplication is bigger than 10 we need to adjust
|
||||
odd_sum += n < 10 ? n : n - 9;
|
||||
|
||||
// Even positions
|
||||
// Just sum them
|
||||
} else {
|
||||
even_sum += n;
|
||||
}
|
||||
}
|
||||
|
||||
all_sum = even_sum + odd_sum;
|
||||
control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
|
||||
control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
|
||||
control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
|
||||
|
||||
// Control must be a digit
|
||||
if ( letter.match( /[ABEH]/ ) ) {
|
||||
return control === control_digit;
|
||||
|
||||
// Control must be a letter
|
||||
} else if ( letter.match( /[KPQS]/ ) ) {
|
||||
return control === control_letter;
|
||||
}
|
||||
|
||||
// Can be either
|
||||
return control === control_digit || control === control_letter;
|
||||
|
||||
}, "Please specify a valid CIF number." );
|
||||
|
||||
|
|
@ -193,6 +261,7 @@ $.validator.addMethod( "cifES", function( value ) {
|
|||
* CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
|
||||
*/
|
||||
$.validator.addMethod( "cpfBR", function( value ) {
|
||||
|
||||
// Removing special characters from value
|
||||
value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
|
||||
|
||||
|
|
@ -209,7 +278,9 @@ $.validator.addMethod("cpfBR", function(value) {
|
|||
|
||||
checkResult = function( sum, cn ) {
|
||||
var result = ( sum * 10 ) % 11;
|
||||
if ((result === 10) || (result === 11)) {result = 0;}
|
||||
if ( ( result === 10 ) || ( result === 11 ) ) {
|
||||
result = 0;
|
||||
}
|
||||
return ( result === cn );
|
||||
};
|
||||
|
||||
|
|
@ -246,6 +317,47 @@ $.validator.addMethod("cpfBR", function(value) {
|
|||
|
||||
}, "Please specify a valid CPF number" );
|
||||
|
||||
// https://jqueryvalidation.org/creditcard-method/
|
||||
// based on https://en.wikipedia.org/wiki/Luhn_algorithm
|
||||
$.validator.addMethod( "creditcard", function( value, element ) {
|
||||
if ( this.optional( element ) ) {
|
||||
return "dependency-mismatch";
|
||||
}
|
||||
|
||||
// Accept only spaces, digits and dashes
|
||||
if ( /[^0-9 \-]+/.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var nCheck = 0,
|
||||
nDigit = 0,
|
||||
bEven = false,
|
||||
n, cDigit;
|
||||
|
||||
value = value.replace( /\D/g, "" );
|
||||
|
||||
// Basing min and max length on
|
||||
// https://developer.ean.com/general_info/Valid_Credit_Card_Types
|
||||
if ( value.length < 13 || value.length > 19 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( n = value.length - 1; n >= 0; n-- ) {
|
||||
cDigit = value.charAt( n );
|
||||
nDigit = parseInt( cDigit, 10 );
|
||||
if ( bEven ) {
|
||||
if ( ( nDigit *= 2 ) > 9 ) {
|
||||
nDigit -= 9;
|
||||
}
|
||||
}
|
||||
|
||||
nCheck += nDigit;
|
||||
bEven = !bEven;
|
||||
}
|
||||
|
||||
return ( nCheck % 10 ) === 0;
|
||||
}, "Please enter a valid credit card number." );
|
||||
|
||||
/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
|
||||
* Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
|
||||
|
|
@ -286,31 +398,31 @@ $.validator.addMethod("creditcardtypes", function(value, element, param) {
|
|||
if ( param.all ) {
|
||||
validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
|
||||
}
|
||||
if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard
|
||||
if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
|
||||
if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex
|
||||
if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub
|
||||
if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
|
||||
return value.length === 14;
|
||||
}
|
||||
if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute
|
||||
if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
|
||||
if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
|
||||
if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
|
||||
return value.length === 16;
|
||||
}
|
||||
if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
|
||||
if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
|
||||
return value.length === 15;
|
||||
}
|
||||
if (validTypes & 0x0080) { //unknown
|
||||
if ( validTypes & 0x0080 ) { // Unknown
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -422,14 +534,17 @@ $.validator.addMethod("giroaccountNL", function(value, element) {
|
|||
/**
|
||||
* IBAN is the international bank account number.
|
||||
* It has a country - specific format, that is checked here too
|
||||
*
|
||||
* Validation is case-insensitive. Please make sure to normalize input yourself.
|
||||
*/
|
||||
$.validator.addMethod( "iban", function( value, element ) {
|
||||
// some quick simple tests to prevent needless work
|
||||
|
||||
// Some quick simple tests to prevent needless work
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// remove spaces and to upper case
|
||||
// Remove spaces and to upper case
|
||||
var iban = value.replace( / /g, "" ).toUpperCase(),
|
||||
ibancheckdigits = "",
|
||||
leadingZeroes = true,
|
||||
|
|
@ -437,7 +552,17 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
cOperator = "",
|
||||
countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
|
||||
|
||||
// check the country code and find the country specific format
|
||||
// Check for IBAN code length.
|
||||
// It contains:
|
||||
// country code ISO 3166-1 - two letters,
|
||||
// two check digits,
|
||||
// Basic Bank Account Number (BBAN) - up to 30 chars
|
||||
var minimalIBANlength = 5;
|
||||
if ( iban.length < minimalIBANlength ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check the country code and find the country specific format
|
||||
countrycode = iban.substring( 0, 2 );
|
||||
bbancountrypatterns = {
|
||||
"AL": "\\d{8}[\\dA-Z]{16}",
|
||||
|
|
@ -507,6 +632,7 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
};
|
||||
|
||||
bbanpattern = bbancountrypatterns[ countrycode ];
|
||||
|
||||
// As new countries will start using IBAN in the
|
||||
// future, we only check if the countrycode is known.
|
||||
// This prevents false negatives, while almost all
|
||||
|
|
@ -517,11 +643,11 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
if ( typeof bbanpattern !== "undefined" ) {
|
||||
ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
|
||||
if ( !( ibanregexp.test( iban ) ) ) {
|
||||
return false; // invalid country specific format
|
||||
return false; // Invalid country specific format
|
||||
}
|
||||
}
|
||||
|
||||
// now check the checksum, first convert to digits
|
||||
// Now check the checksum, first convert to digits
|
||||
ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
|
||||
for ( i = 0; i < ibancheck.length; i++ ) {
|
||||
charAt = ibancheck.charAt( i );
|
||||
|
|
@ -533,7 +659,7 @@ $.validator.addMethod("iban", function(value, element) {
|
|||
}
|
||||
}
|
||||
|
||||
// calculate the result of: ibancheckdigits % 97
|
||||
// Calculate the result of: ibancheckdigits % 97
|
||||
for ( p = 0; p < ibancheckdigits.length; p++ ) {
|
||||
cChar = ibancheckdigits.charAt( p );
|
||||
cOperator = "" + cRest + "" + cChar;
|
||||
|
|
@ -580,47 +706,60 @@ $.validator.addMethod("mobileUK", function(phone_number, element) {
|
|||
phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
|
||||
}, "Please specify a valid mobile number" );
|
||||
|
||||
$.validator.addMethod( "netmask", function( value, element ) {
|
||||
return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
|
||||
}, "Please enter a valid netmask." );
|
||||
|
||||
/*
|
||||
* The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain
|
||||
* The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
|
||||
* authorities to any foreigner.
|
||||
*
|
||||
* The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
|
||||
* identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
|
||||
* companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
|
||||
*/
|
||||
$.validator.addMethod( "nieES", function( value ) {
|
||||
$.validator.addMethod( "nieES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
value = value.toUpperCase();
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Basic format test
|
||||
if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
|
||||
var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
|
||||
var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
|
||||
letter = value.substr( value.length - 1 ).toUpperCase(),
|
||||
number;
|
||||
|
||||
value = value.toString().toUpperCase();
|
||||
|
||||
// Quick format test
|
||||
if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Test NIE
|
||||
//T
|
||||
if ( /^[T]{1}/.test( value ) ) {
|
||||
return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) );
|
||||
}
|
||||
// X means same number
|
||||
// Y means number + 10000000
|
||||
// Z means number + 20000000
|
||||
value = value.replace( /^[X]/, "0" )
|
||||
.replace( /^[Y]/, "1" )
|
||||
.replace( /^[Z]/, "2" );
|
||||
|
||||
//XYZ
|
||||
if ( /^[XYZ]{1}/.test( value ) ) {
|
||||
return (
|
||||
value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt(
|
||||
value.replace( "X", "0" )
|
||||
.replace( "Y", "1" )
|
||||
.replace( "Z", "2" )
|
||||
.substring( 0, 8 ) % 23
|
||||
)
|
||||
);
|
||||
}
|
||||
number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
|
||||
|
||||
return false;
|
||||
return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
|
||||
|
||||
}, "Please specify a valid NIE number." );
|
||||
|
||||
/*
|
||||
* The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
|
||||
*/
|
||||
$.validator.addMethod( "nifES", function( value ) {
|
||||
$.validator.addMethod( "nifES", function( value, element ) {
|
||||
"use strict";
|
||||
|
||||
if ( this.optional( element ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
value = value.toUpperCase();
|
||||
|
||||
// Basic format test
|
||||
|
|
@ -632,16 +771,40 @@ $.validator.addMethod( "nifES", function( value ) {
|
|||
if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
|
||||
return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
|
||||
}
|
||||
|
||||
// Test specials NIF (starts with K, L or M)
|
||||
if ( /^[KLM]{1}/.test( value ) ) {
|
||||
return ( value[ 8 ] === String.fromCharCode( 64 ) );
|
||||
return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}, "Please specify a valid NIF number." );
|
||||
|
||||
jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) {
|
||||
/*
|
||||
* Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
|
||||
*/
|
||||
$.validator.addMethod( "nipPL", function( value ) {
|
||||
"use strict";
|
||||
|
||||
value = value.replace( /[^0-9]/g, "" );
|
||||
|
||||
if ( value.length !== 10 ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
|
||||
var intSum = 0;
|
||||
for ( var i = 0; i < 9; i++ ) {
|
||||
intSum += arrSteps[ i ] * value[ i ];
|
||||
}
|
||||
var int2 = intSum % 11;
|
||||
var intControlNr = ( int2 === 10 ) ? 0 : int2;
|
||||
|
||||
return ( intControlNr === parseInt( value[ 9 ], 10 ) );
|
||||
}, "Please specify a valid NIP number." );
|
||||
|
||||
$.validator.addMethod( "notEqualTo", function( value, element, param ) {
|
||||
return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
|
||||
}, "Please enter a different value, values must not be the same." );
|
||||
|
||||
|
|
@ -679,6 +842,22 @@ $.validator.addMethod("phoneNL", function(value, element) {
|
|||
return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
|
||||
}, "Please specify a valid phone number." );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
* Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
|
||||
* Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
|
||||
* A number of very detailed GB telephone number RegEx patterns can also be found at:
|
||||
* http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
|
||||
*/
|
||||
|
||||
// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
|
||||
$.validator.addMethod( "phonesUK", function( phone_number, element ) {
|
||||
phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
|
||||
return this.optional( element ) || phone_number.length > 9 &&
|
||||
phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
|
||||
}, "Please specify a valid uk phone number" );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
|
|
@ -694,7 +873,7 @@ $.validator.addMethod("phoneUK", function(phone_number, element) {
|
|||
}, "Please specify a valid phone number" );
|
||||
|
||||
/**
|
||||
* matches US phone number format
|
||||
* Matches US phone number format
|
||||
*
|
||||
* where the area code may not start with 1 and the prefix may not start with 1
|
||||
* allows '-' or ' ' as a separator and allows parens around area code
|
||||
|
|
@ -715,20 +894,17 @@ $.validator.addMethod("phoneUS", function(phone_number, element) {
|
|||
phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
|
||||
}, "Please specify a valid phone number" );
|
||||
|
||||
/* For UK phone functions, do the following server side processing:
|
||||
* Compare original input with this RegEx pattern:
|
||||
* ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
|
||||
* Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
|
||||
* Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
|
||||
* A number of very detailed GB telephone number RegEx patterns can also be found at:
|
||||
* http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
|
||||
/*
|
||||
* Valida CEPs do brasileiros:
|
||||
*
|
||||
* Formatos aceitos:
|
||||
* 99999-999
|
||||
* 99.999-999
|
||||
* 99999999
|
||||
*/
|
||||
//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
|
||||
$.validator.addMethod("phonesUK", function(phone_number, element) {
|
||||
phone_number = phone_number.replace(/\(|\)|\s+|-/g, "");
|
||||
return this.optional(element) || phone_number.length > 9 &&
|
||||
phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/);
|
||||
}, "Please specify a valid uk phone number");
|
||||
$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
|
||||
return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
|
||||
}, "Informe um CEP válido." );
|
||||
|
||||
/**
|
||||
* Matches a valid Canadian Postal Code
|
||||
|
|
@ -744,21 +920,9 @@ $.validator.addMethod("phonesUK", function(phone_number, element) {
|
|||
* @cat Plugins/Validate/Methods
|
||||
*/
|
||||
$.validator.addMethod( "postalCodeCA", function( value, element ) {
|
||||
return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value );
|
||||
return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
|
||||
}, "Please specify a valid postal code" );
|
||||
|
||||
/*
|
||||
* Valida CEPs do brasileiros:
|
||||
*
|
||||
* Formatos aceitos:
|
||||
* 99999-999
|
||||
* 99.999-999
|
||||
* 99999999
|
||||
*/
|
||||
$.validator.addMethod("postalcodeBR", function(cep_value, element) {
|
||||
return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
|
||||
}, "Informe um CEP válido.");
|
||||
|
||||
/* Matches Italian postcode (CAP) */
|
||||
$.validator.addMethod( "postalcodeIT", function( value, element ) {
|
||||
return this.optional( element ) || /^\d{5}$/.test( value );
|
||||
|
|
@ -888,10 +1052,7 @@ $.validator.addMethod("skip_or_fill_minimum", function(value, element, options)
|
|||
* includeMilitary: true
|
||||
* }
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
$.validator.addMethod( "stateUS", function( value, element, options ) {
|
||||
var isDefault = typeof options === "undefined",
|
||||
caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
|
||||
|
|
@ -911,8 +1072,7 @@ $.validator.addMethod("stateUS", function(value, element, options) {
|
|||
|
||||
regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
|
||||
return this.optional( element ) || regex.test( value );
|
||||
},
|
||||
"Please specify a valid state");
|
||||
}, "Please specify a valid state" );
|
||||
|
||||
// TODO check if value starts with <, otherwise don't try stripping anything
|
||||
$.validator.addMethod( "strippedminlength", function( value, element, param ) {
|
||||
|
|
@ -927,7 +1087,7 @@ $.validator.addMethod("time12h", function(value, element) {
|
|||
return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
|
||||
}, "Please enter a valid time in 12-hour am/pm format" );
|
||||
|
||||
// same as url, but TLD is optional
|
||||
// Same as url, but TLD is optional
|
||||
$.validator.addMethod( "url2", function( value, element ) {
|
||||
return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
|
||||
}, $.validator.messages.url );
|
||||
|
|
@ -994,5 +1154,5 @@ $.validator.addMethod("zipcodeUS", function(value, element) {
|
|||
$.validator.addMethod( "ziprange", function( value, element ) {
|
||||
return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
|
||||
}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
|
||||
|
||||
return $;
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -167,7 +167,7 @@ externally maintained libraries used by this software which have their
|
|||
own licenses; we recommend you read them, as their terms may differ from
|
||||
the terms above.
|
||||
|
||||
License notice for jQuery Validation v1.14.0
|
||||
License notice for jQuery Validation v1.17.0
|
||||
--------------------------------------------
|
||||
The MIT License (MIT)
|
||||
=====================
|
||||
|
|
|
|||
|
|
@ -66,8 +66,11 @@
|
|||
"wwwroot/lib/jquery-validation/.bower.json",
|
||||
"wwwroot/lib/jquery-validation/LICENSE.md",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.js",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.min.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -132,8 +135,11 @@
|
|||
"wwwroot/lib/jquery-validation/.bower.json",
|
||||
"wwwroot/lib/jquery-validation/LICENSE.md",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.js",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.min.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -199,8 +205,11 @@
|
|||
"wwwroot/lib/jquery-validation/.bower.json",
|
||||
"wwwroot/lib/jquery-validation/LICENSE.md",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.js",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.min.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -266,8 +275,11 @@
|
|||
"wwwroot/lib/jquery-validation/.bower.json",
|
||||
"wwwroot/lib/jquery-validation/LICENSE.md",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.js",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.min.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -332,8 +344,11 @@
|
|||
"wwwroot/lib/jquery-validation/.bower.json",
|
||||
"wwwroot/lib/jquery-validation/LICENSE.md",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.js",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.min.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -399,8 +414,11 @@
|
|||
"wwwroot/lib/jquery-validation/.bower.json",
|
||||
"wwwroot/lib/jquery-validation/LICENSE.md",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.js",
|
||||
"wwwroot/lib/jquery-validation/dist/additional-methods.min.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -428,7 +446,6 @@
|
|||
"appsettings.Development.json",
|
||||
"appsettings.json",
|
||||
"Program.cs",
|
||||
|
||||
"Startup.cs",
|
||||
"Controllers/ValuesController.cs",
|
||||
"Properties/launchSettings.json"
|
||||
|
|
@ -456,7 +473,6 @@
|
|||
"appsettings.json",
|
||||
"Program.cs",
|
||||
"Startup.cs",
|
||||
|
||||
"Controllers/ValuesController.cs",
|
||||
"Properties/launchSettings.json"
|
||||
],
|
||||
|
|
@ -531,6 +547,7 @@
|
|||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -596,6 +613,7 @@
|
|||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -662,6 +680,7 @@
|
|||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -728,6 +747,7 @@
|
|||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -793,6 +813,7 @@
|
|||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
@ -859,6 +880,7 @@
|
|||
"wwwroot/lib/jquery-validation/dist/jquery.validate.js",
|
||||
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/.bower.json",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js",
|
||||
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
],
|
||||
|
|
|
|||
Loading…
Reference in New Issue