mirror of
https://github.com/jquery-validation/jquery-validation.git
synced 2025-12-24 12:13:59 +01:00
Core: move message processing from formatAndAdd to defaultMessage
Fixes #741. Closes #1644.
This commit is contained in:
committed by
Markus Staab
parent
43ffa81180
commit
a3cc0c0a70
38
src/core.js
38
src/core.js
@@ -215,6 +215,9 @@ $.validator.format = function( source, params ) {
|
||||
return $.validator.format.apply( this, args );
|
||||
};
|
||||
}
|
||||
if ( params === undefined ) {
|
||||
return source;
|
||||
}
|
||||
if ( arguments.length > 2 && params.constructor !== Array ) {
|
||||
params = $.makeArray( arguments ).slice( 1 );
|
||||
}
|
||||
@@ -767,26 +770,29 @@ $.extend( $.validator, {
|
||||
return undefined;
|
||||
},
|
||||
|
||||
defaultMessage: function( element, method ) {
|
||||
return this.findDefined(
|
||||
this.customMessage( element.name, method ),
|
||||
this.customDataMessage( element, method ),
|
||||
defaultMessage: function( element, rule ) {
|
||||
var message = this.findDefined(
|
||||
this.customMessage( element.name, rule.method ),
|
||||
this.customDataMessage( element, rule.method ),
|
||||
|
||||
// 'title' is never undefined, so handle empty string as undefined
|
||||
!this.settings.ignoreTitle && element.title || undefined,
|
||||
$.validator.messages[ method ],
|
||||
"<strong>Warning: No message defined for " + element.name + "</strong>"
|
||||
);
|
||||
},
|
||||
|
||||
formatAndAdd: function( element, rule ) {
|
||||
var message = this.defaultMessage( element, rule.method ),
|
||||
// 'title' is never undefined, so handle empty string as undefined
|
||||
!this.settings.ignoreTitle && element.title || undefined,
|
||||
$.validator.messages[ rule.method ],
|
||||
"<strong>Warning: No message defined for " + element.name + "</strong>"
|
||||
),
|
||||
theregex = /\$?\{(\d+)\}/g;
|
||||
if ( typeof message === "function" ) {
|
||||
message = message.call( this, rule.parameters, element );
|
||||
} else if ( theregex.test( message ) ) {
|
||||
message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
|
||||
}
|
||||
|
||||
return message;
|
||||
},
|
||||
|
||||
formatAndAdd: function( element, rule ) {
|
||||
var message = this.defaultMessage( element, rule );
|
||||
|
||||
this.errorList.push( {
|
||||
message: message,
|
||||
element: element,
|
||||
@@ -1032,7 +1038,7 @@ $.extend( $.validator, {
|
||||
return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
|
||||
old: null,
|
||||
valid: true,
|
||||
message: this.defaultMessage( element, "remote" )
|
||||
message: this.defaultMessage( element, { method: "remote" } )
|
||||
} );
|
||||
},
|
||||
|
||||
@@ -1421,8 +1427,8 @@ $.extend( $.validator, {
|
||||
validator.showErrors();
|
||||
} else {
|
||||
errors = {};
|
||||
message = response || validator.defaultMessage( element, "remote" );
|
||||
errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;
|
||||
message = response || validator.defaultMessage( element, { method: "remote", parameters: value } );
|
||||
errors[ element.name ] = previous.message = message;
|
||||
validator.invalid[ element.name ] = true;
|
||||
validator.showErrors( errors );
|
||||
}
|
||||
|
||||
@@ -387,6 +387,10 @@
|
||||
<label for="testForm21!#$%&'()*+,./:;<=>?@[\]^`{|}~">Input text</label>
|
||||
<input type="text" name="testForm21!#$%&'()*+,./:;<=>?@[\]^`{|}~" id="testForm21!#$%&'()*+,./:;<=>?@[\]^`{|}~" required minlength="15">
|
||||
</form>
|
||||
<form id="testForm22">
|
||||
<label for="tF22Input">Input text</label>
|
||||
<input type="text" name="tF22Input" id="tF22Input" required minlength="5" data-msg-minlength="You should enter at least {0} characters.">
|
||||
</form>
|
||||
<form id="contenteditableForm">
|
||||
<div contenteditable id="contenteditableNumberInvalid" data-rule-number="true" name="field1">ABC</div>
|
||||
<div contenteditable id="contenteditableNumberValid" data-rule-number="true" name="field2">123</div>
|
||||
|
||||
12
test/test.js
12
test/test.js
@@ -637,7 +637,17 @@ test( "option: errorClass with multiple classes", function() {
|
||||
|
||||
test( "defaultMessage(), empty title is ignored", function() {
|
||||
var v = $( "#userForm" ).validate();
|
||||
equal( v.defaultMessage( $( "#username" )[ 0 ], "required" ), "This field is required." );
|
||||
equal( v.defaultMessage( $( "#username" )[ 0 ], { method: "required", parameters: true } ), "This field is required." );
|
||||
} );
|
||||
|
||||
test( "#741: move message processing from formatAndAdd to defaultMessage", function() {
|
||||
var v = $( "#testForm22" ).validate();
|
||||
equal( v.defaultMessage( $( "#tF22Input" )[ 0 ], { method: "minlength", parameters: 5 } ),
|
||||
"You should enter at least 5 characters.", "defaultMessage() now format the messages" );
|
||||
|
||||
$( "#tF22Input" ).val( "abc" );
|
||||
v.form();
|
||||
equal( v.errorList[ 0 ].message, "You should enter at least 5 characters." );
|
||||
} );
|
||||
|
||||
test( "formatAndAdd", function() {
|
||||
|
||||
Reference in New Issue
Block a user