зеркало из https://github.com/dotnet/aspnetcore.git
Update jquery.validate to 1.20.0 (#56803)
Co-authored-by: javiercn <javiercn@users.noreply.github.com>
This commit is contained in:
Родитель
b49b19e376
Коммит
b54868ed2f
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"currentVersion": "1.19.5",
|
||||
"integrity": "sha256-JwUksNJ6/R07ZiLRoXbGeNrtlFZMFDKX4hemPiHOmCA="
|
||||
}
|
||||
"currentVersion": "1.20.0",
|
||||
"integrity": "sha256-ic6hxNWCB3IBDsXq0z5KpKHmcJc1anmnh0xGOi0C5Dw="
|
||||
}
|
|
@ -3,11 +3,11 @@
|
|||
<script src="~/Identity/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
</environment>
|
||||
<environment exclude="Development">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.20.0/jquery.validate.min.js"
|
||||
asp-fallback-src="~/Identity/lib/jquery-validation/dist/jquery.validate.min.js"
|
||||
asp-fallback-test="window.jQuery && window.jQuery.validator"
|
||||
crossorigin="anonymous"
|
||||
integrity="sha256-JwUksNJ6/R07ZiLRoXbGeNrtlFZMFDKX4hemPiHOmCA=">
|
||||
integrity="sha256-ic6hxNWCB3IBDsXq0z5KpKHmcJc1anmnh0xGOi0C5Dw=">
|
||||
</script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/4.0.0/jquery.validate.unobtrusive.min.js"
|
||||
asp-fallback-src="~/Identity/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
<script src="~/Identity/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
</environment>
|
||||
<environment exclude="Development">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.20.0/jquery.validate.min.js"
|
||||
asp-fallback-src="~/Identity/lib/jquery-validation/dist/jquery.validate.min.js"
|
||||
asp-fallback-test="window.jQuery && window.jQuery.validator"
|
||||
crossorigin="anonymous"
|
||||
integrity="sha256-JwUksNJ6/R07ZiLRoXbGeNrtlFZMFDKX4hemPiHOmCA=">
|
||||
integrity="sha256-ic6hxNWCB3IBDsXq0z5KpKHmcJc1anmnh0xGOi0C5Dw=">
|
||||
</script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/4.0.0/jquery.validate.unobtrusive.min.js"
|
||||
asp-fallback-src="~/Identity/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"name": "jquery-validation-dependency",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "jquery-validation-dependency",
|
||||
"version": "1.0.0",
|
||||
"devDependencies": {
|
||||
"jquery-validation": "1.20.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jquery": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
|
||||
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
|
||||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/jquery-validation": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.0.tgz",
|
||||
"integrity": "sha512-c8tg4ltIIP6L7l0bZ79sRzOJYquyjS48kQZ6iv8MJ2r0OYztxtkWYKTReZyU2/zVFYiINB29i0Z/IRNNuJQN1g==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"jquery": "^1.7 || ^2.0 || ^3.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
|||
/*!
|
||||
* jQuery Validation Plugin v1.19.5
|
||||
* jQuery Validation Plugin v1.20.0
|
||||
*
|
||||
* https://jqueryvalidation.org/
|
||||
*
|
||||
* Copyright (c) 2022 Jörn Zaefferer
|
||||
* Copyright (c) 2023 Jörn Zaefferer
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function( factory ) {
|
||||
|
@ -774,6 +774,9 @@ $.extend( $.validator, {
|
|||
val = this.elementValue( element ),
|
||||
result, method, rule, normalizer;
|
||||
|
||||
// Abort any pending Ajax request from a previous call to this method.
|
||||
this.abortRequest( element );
|
||||
|
||||
// Prioritize the local normalizer defined for this element over the global one
|
||||
// if the former exists, otherwise user the global one in case it exists.
|
||||
if ( typeof rules.normalizer === "function" ) {
|
||||
|
@ -960,14 +963,23 @@ $.extend( $.validator, {
|
|||
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
|
||||
|
||||
// Replace message on existing label
|
||||
error.html( message );
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
} else {
|
||||
|
||||
// Create error element
|
||||
error = $( "<" + this.settings.errorElement + ">" )
|
||||
.attr( "id", elementID + "-error" )
|
||||
.addClass( this.settings.errorClass )
|
||||
.html( message || "" );
|
||||
.addClass( this.settings.errorClass );
|
||||
|
||||
if ( this.settings && this.settings.escapeHtml ) {
|
||||
error.text( message || "" );
|
||||
} else {
|
||||
error.html( message || "" );
|
||||
}
|
||||
|
||||
// Maintain reference to the element to be placed into the DOM
|
||||
place = error;
|
||||
|
@ -1113,6 +1125,10 @@ $.extend( $.validator, {
|
|||
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
|
||||
},
|
||||
|
||||
elementAjaxPort: function( element ) {
|
||||
return "validate" + element.name;
|
||||
},
|
||||
|
||||
startRequest: function( element ) {
|
||||
if ( !this.pending[ element.name ] ) {
|
||||
this.pendingRequest++;
|
||||
|
@ -1148,6 +1164,25 @@ $.extend( $.validator, {
|
|||
}
|
||||
},
|
||||
|
||||
abortRequest: function( element ) {
|
||||
var port;
|
||||
|
||||
if ( this.pending[ element.name ] ) {
|
||||
port = this.elementAjaxPort( element );
|
||||
$.ajaxAbort( port );
|
||||
|
||||
this.pendingRequest--;
|
||||
|
||||
// Sometimes synchronization fails, make sure pendingRequest is never < 0
|
||||
if ( this.pendingRequest < 0 ) {
|
||||
this.pendingRequest = 0;
|
||||
}
|
||||
|
||||
delete this.pending[ element.name ];
|
||||
$( element ).removeClass( this.settings.pendingClass );
|
||||
}
|
||||
},
|
||||
|
||||
previousValue: function( element, method ) {
|
||||
method = typeof method === "string" && method || "remote";
|
||||
|
||||
|
@ -1588,7 +1623,7 @@ $.extend( $.validator, {
|
|||
data[ element.name ] = value;
|
||||
$.ajax( $.extend( true, {
|
||||
mode: "abort",
|
||||
port: "validate" + element.name,
|
||||
port: this.elementAjaxPort( element ),
|
||||
dataType: "json",
|
||||
data: data,
|
||||
context: validator.currentForm,
|
||||
|
@ -1599,7 +1634,6 @@ $.extend( $.validator, {
|
|||
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
|
||||
if ( valid ) {
|
||||
submitted = validator.formSubmitted;
|
||||
validator.resetInternals();
|
||||
validator.toHide = validator.errorsFor( element );
|
||||
validator.formSubmitted = submitted;
|
||||
validator.successList.push( element );
|
||||
|
@ -1624,6 +1658,7 @@ $.extend( $.validator, {
|
|||
|
||||
// Ajax mode: abort
|
||||
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
|
||||
// $.ajaxAbort( port );
|
||||
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
|
||||
|
||||
var pendingRequests = {},
|
||||
|
@ -1634,9 +1669,7 @@ if ( $.ajaxPrefilter ) {
|
|||
$.ajaxPrefilter( function( settings, _, xhr ) {
|
||||
var port = settings.port;
|
||||
if ( settings.mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = xhr;
|
||||
}
|
||||
} );
|
||||
|
@ -1648,14 +1681,20 @@ if ( $.ajaxPrefilter ) {
|
|||
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
|
||||
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
|
||||
if ( mode === "abort" ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
}
|
||||
$.ajaxAbort( port );
|
||||
pendingRequests[ port ] = ajax.apply( this, arguments );
|
||||
return pendingRequests[ port ];
|
||||
}
|
||||
return ajax.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Abort the previous request without sending a new one
|
||||
$.ajaxAbort = function( port ) {
|
||||
if ( pendingRequests[ port ] ) {
|
||||
pendingRequests[ port ].abort();
|
||||
delete pendingRequests[ port ];
|
||||
}
|
||||
};
|
||||
return $;
|
||||
}));
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Загрузка…
Ссылка в новой задаче