Skip to content

Commit cae9601

Browse files
committed
AC-12024::Upgrade jquery/validate library dependency to the latest minor version
1 parent 4745100 commit cae9601

File tree

1 file changed

+54
-27
lines changed

1 file changed

+54
-27
lines changed

lib/web/jquery/jquery.validate.js

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
/*!
2-
* jQuery Validation Plugin v1.19.5
2+
* jQuery Validation Plugin v1.20.0
33
*
44
* https://jqueryvalidation.org/
55
*
6-
* Copyright (c) 2022 Jörn Zaefferer
6+
* Copyright (c) 2023 Jörn Zaefferer
77
* Released under the MIT license
88
*/
99
(function( factory ) {
@@ -192,7 +192,6 @@
192192
data = $.validator.normalizeRules(
193193
$.extend(
194194
{},
195-
$.validator.metadataRules(element),
196195
$.validator.classRules( element ),
197196
$.validator.attributeRules( element ),
198197
$.validator.dataRules( element ),
@@ -775,6 +774,9 @@
775774
val = this.elementValue( element ),
776775
result, method, rule, normalizer;
777776

777+
// Abort any pending Ajax request from a previous call to this method.
778+
this.abortRequest( element );
779+
778780
// Prioritize the local normalizer defined for this element over the global one
779781
// if the former exists, otherwise user the global one in case it exists.
780782
if ( typeof rules.normalizer === "function" ) {
@@ -783,7 +785,7 @@
783785
normalizer = this.settings.normalizer;
784786
}
785787

786-
// If normalizer is defined, then call it to the changed value instead
788+
// If normalizer is defined, then call it to retreive the changed value instead
787789
// of using the real one.
788790
// Note that `this` in the normalizer is `element`.
789791
if ( normalizer ) {
@@ -961,14 +963,23 @@
961963
error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
962964

963965
// Replace message on existing label
964-
error.html( message );
966+
if ( this.settings && this.settings.escapeHtml ) {
967+
error.text( message || "" );
968+
} else {
969+
error.html( message || "" );
970+
}
965971
} else {
966972

967973
// Create error element
968974
error = $( "<" + this.settings.errorElement + ">" )
969975
.attr( "id", elementID + "-error" )
970-
.addClass( this.settings.errorClass )
971-
.html( message || "" );
976+
.addClass( this.settings.errorClass );
977+
978+
if ( this.settings && this.settings.escapeHtml ) {
979+
error.text( message || "" );
980+
} else {
981+
error.html( message || "" );
982+
}
972983

973984
// Maintain reference to the element to be placed into the DOM
974985
place = error;
@@ -1039,7 +1050,7 @@
10391050
// 'aria-describedby' should directly reference the error element
10401051
if ( describer ) {
10411052
selector = selector + ", #" + this.escapeCssMeta( describer )
1042-
.replace( /\s+/g, ", #" ) + ":visible";
1053+
.replace( /\s+/g, ", #" );
10431054
}
10441055

10451056
return this
@@ -1114,6 +1125,10 @@
11141125
return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
11151126
},
11161127

1128+
elementAjaxPort: function( element ) {
1129+
return "validate" + element.name;
1130+
},
1131+
11171132
startRequest: function( element ) {
11181133
if ( !this.pending[ element.name ] ) {
11191134
this.pendingRequest++;
@@ -1149,6 +1164,25 @@
11491164
}
11501165
},
11511166

1167+
abortRequest: function( element ) {
1168+
var port;
1169+
1170+
if ( this.pending[ element.name ] ) {
1171+
port = this.elementAjaxPort( element );
1172+
$.ajaxAbort( port );
1173+
1174+
this.pendingRequest--;
1175+
1176+
// Sometimes synchronization fails, make sure pendingRequest is never < 0
1177+
if ( this.pendingRequest < 0 ) {
1178+
this.pendingRequest = 0;
1179+
}
1180+
1181+
delete this.pending[ element.name ];
1182+
$( element ).removeClass( this.settings.pendingClass );
1183+
}
1184+
},
1185+
11521186
previousValue: function( element, method ) {
11531187
method = typeof method === "string" && method || "remote";
11541188

@@ -1276,17 +1310,6 @@
12761310
return rules;
12771311
},
12781312

1279-
metadataRules: function (element) {
1280-
if (!$.metadata) {
1281-
return {};
1282-
}
1283-
1284-
var meta = $.data(element.form, 'validator').settings.meta;
1285-
return meta ?
1286-
$(element).metadata()[meta] :
1287-
$(element).metadata();
1288-
},
1289-
12901313
dataRules: function( element ) {
12911314
var rules = {},
12921315
$element = $( element ),
@@ -1600,7 +1623,7 @@
16001623
data[ element.name ] = value;
16011624
$.ajax( $.extend( true, {
16021625
mode: "abort",
1603-
port: "validate" + element.name,
1626+
port: this.elementAjaxPort( element ),
16041627
dataType: "json",
16051628
data: data,
16061629
context: validator.currentForm,
@@ -1611,7 +1634,6 @@
16111634
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
16121635
if ( valid ) {
16131636
submitted = validator.formSubmitted;
1614-
validator.resetInternals();
16151637
validator.toHide = validator.errorsFor( element );
16161638
validator.formSubmitted = submitted;
16171639
validator.successList.push( element );
@@ -1636,6 +1658,7 @@
16361658

16371659
// Ajax mode: abort
16381660
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1661+
// $.ajaxAbort( port );
16391662
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
16401663

16411664
var pendingRequests = {},
@@ -1646,9 +1669,7 @@
16461669
$.ajaxPrefilter( function( settings, _, xhr ) {
16471670
var port = settings.port;
16481671
if ( settings.mode === "abort" ) {
1649-
if ( pendingRequests[ port ] ) {
1650-
pendingRequests[ port ].abort();
1651-
}
1672+
$.ajaxAbort( port );
16521673
pendingRequests[ port ] = xhr;
16531674
}
16541675
} );
@@ -1660,14 +1681,20 @@
16601681
var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
16611682
port = ( "port" in settings ? settings : $.ajaxSettings ).port;
16621683
if ( mode === "abort" ) {
1663-
if ( pendingRequests[ port ] ) {
1664-
pendingRequests[ port ].abort();
1665-
}
1684+
$.ajaxAbort( port );
16661685
pendingRequests[ port ] = ajax.apply( this, arguments );
16671686
return pendingRequests[ port ];
16681687
}
16691688
return ajax.apply( this, arguments );
16701689
};
16711690
}
1691+
1692+
// Abort the previous request without sending a new one
1693+
$.ajaxAbort = function( port ) {
1694+
if ( pendingRequests[ port ] ) {
1695+
pendingRequests[ port ].abort();
1696+
delete pendingRequests[ port ];
1697+
}
1698+
};
16721699
return $;
16731700
}));

0 commit comments

Comments
 (0)