From 986a47df7d7fffe456f21c2162f9cad6450a619f Mon Sep 17 00:00:00 2001 From: Brahim Arkni Date: Sat, 11 Jun 2016 20:31:02 +0000 Subject: [PATCH] Core: Fix regressions introduced in #1644 and #1657 --- src/core.js | 15 +++++++++++++++ test/test.js | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/core.js b/src/core.js index 743f0283a..e2aed3d88 100644 --- a/src/core.js +++ b/src/core.js @@ -802,7 +802,20 @@ $.extend( $.validator, { return undefined; }, + // The second parameter 'rule' used to be a string, and extended to an object literal + // of the following form: + // rule = { + // method: "method name", + // parameters: "the given method parameters" + // } + // + // The old behavior still supported, kept to maintain backward compatibility with + // old code, and will be removed in the next major release. defaultMessage: function( element, rule ) { + if ( typeof rule === "string" ) { + rule = { method: rule }; + } + var message = this.findDefined( this.customMessage( element.name, rule.method ), this.customDataMessage( element, rule.method ), @@ -1067,6 +1080,8 @@ $.extend( $.validator, { }, previousValue: function( element, method ) { + method = typeof method === "string" && method || "remote"; + return $.data( element, "previousValue" ) || $.data( element, "previousValue", { old: null, valid: true, diff --git a/test/test.js b/test/test.js index 12541c221..c847b4bfe 100644 --- a/test/test.js +++ b/test/test.js @@ -679,6 +679,30 @@ test( "option: errorClass with multiple classes", function() { test( "defaultMessage(), empty title is ignored", function() { var v = $( "#userForm" ).validate(); equal( v.defaultMessage( $( "#username" )[ 0 ], { method: "required", parameters: true } ), "This field is required." ); + + // Using the old way when we pass the name of a method as the second parameters. + equal( v.defaultMessage( $( "#username" )[ 0 ], "required" ), "This field is required." ); +} ); + +QUnit.test( "previousValue()", function( assert ) { + assert.expect( 2 ); + + var e = $( "#username" ), + v = $( "#userForm" ).validate(), + expectedRemote = { + old: null, + valid: true, + message: "Please fix this field." + }, expectedRequired = { + old: null, + valid: true, + message: "This field is required." + }; + + assert.deepEqual( v.previousValue( e[ 0 ] ), expectedRemote, "should be the same" ); + + e.removeData( "previousValue" ); + assert.deepEqual( v.previousValue( e[ 0 ], "required" ), expectedRequired, "should be the same" ); } ); test( "#741: move message processing from formatAndAdd to defaultMessage", function() {