From 4a40fdbf647f5980e9d9417678126ba77a786b6b Mon Sep 17 00:00:00 2001 From: Brahim Arkni Date: Tue, 19 Jun 2018 00:05:48 +0100 Subject: [PATCH 1/2] Test: Cast empty data attributes to 'true' --- test/index.html | 4 +++- test/rules.js | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/test/index.html b/test/index.html index 0079aa7d9..d02732856 100644 --- a/test/index.html +++ b/test/index.html @@ -277,7 +277,9 @@

- + + +
diff --git a/test/rules.js b/test/rules.js index 1be57bf49..178f810b2 100644 --- a/test/rules.js +++ b/test/rules.js @@ -157,7 +157,7 @@ QUnit.test( "rules(), class and attribute combinations", function( assert ) { $( "#v2" ).validate( { rules: { - "v2-i7": { + "v2-i9": { required: true, minlength: 2, customMethod: true @@ -173,8 +173,10 @@ QUnit.test( "rules(), class and attribute combinations", function( assert ) { jQuery.validator.autoCreateRanges = true; assert.deepEqual( $( "#v2-i5" ).rules(), { required: true, customMethod1: "123", rangelength: [ 2, 5 ] } ); assert.deepEqual( $( "#v2-i6" ).rules(), { required: true, customMethod2: true, rangelength: [ 2, 5 ] } ); + assert.deepEqual( $( "#v2-i7" ).rules(), { required: true, number: true } ); + assert.deepEqual( $( "#v2-i8" ).rules(), { required: true, number: true } ); jQuery.validator.autoCreateRanges = false; - assert.deepEqual( $( "#v2-i7" ).rules(), { required: true, minlength: 2, customMethod: true } ); + assert.deepEqual( $( "#v2-i9" ).rules(), { required: true, minlength: 2, customMethod: true } ); delete $.validator.methods.customMethod1; delete $.validator.messages.customMethod1; From 411fd42eed0fab0140badf769dfa5257bbd5a3d0 Mon Sep 17 00:00:00 2001 From: Brahim Arkni Date: Tue, 19 Jun 2018 00:09:34 +0100 Subject: [PATCH 2/2] Core: Cast empty data attributes to 'true' Fixes #1754 --- src/core.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core.js b/src/core.js index 93fe25568..b32519893 100644 --- a/src/core.js +++ b/src/core.js @@ -1248,6 +1248,12 @@ $.extend( $.validator, { for ( method in $.validator.methods ) { value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() ); + + // Cast empty attributes like `data-rule-required` to `true` + if ( value === "" ) { + value = true; + } + this.normalizeAttributeRule( rules, type, method, value ); } return rules;