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; 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;