diff --git a/src/additional/greaterThan.js b/src/additional/greaterThan.js new file mode 100644 index 000000000..67d8c3050 --- /dev/null +++ b/src/additional/greaterThan.js @@ -0,0 +1,11 @@ +$.validator.addMethod( "greaterThan", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-greaterThan-blur" ).length ) { + target.addClass( "validate-greaterThan-blur" ).on( "blur.validate-greaterThan", function() { + $( element ).valid(); + } ); + } + + return value > target.val(); +}, "Please enter a greater value." ); diff --git a/src/additional/greaterThanEqual.js b/src/additional/greaterThanEqual.js new file mode 100644 index 000000000..de6203728 --- /dev/null +++ b/src/additional/greaterThanEqual.js @@ -0,0 +1,11 @@ +$.validator.addMethod( "greaterThanEqual", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-greaterThanEqual-blur" ).length ) { + target.addClass( "validate-greaterThanEqual-blur" ).on( "blur.validate-greaterThanEqual", function() { + $( element ).valid(); + } ); + } + + return value >= target.val(); +}, "Please enter a greater value." ); diff --git a/src/additional/lessThan.js b/src/additional/lessThan.js new file mode 100644 index 000000000..2959bc362 --- /dev/null +++ b/src/additional/lessThan.js @@ -0,0 +1,11 @@ +$.validator.addMethod( "lessThan", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-lessThan-blur" ).length ) { + target.addClass( "validate-lessThan-blur" ).on( "blur.validate-lessThan", function() { + $( element ).valid(); + } ); + } + + return value < target.val(); +}, "Please enter a lesser value." ); diff --git a/src/additional/lessThanEqual.js b/src/additional/lessThanEqual.js new file mode 100644 index 000000000..78a1e25a6 --- /dev/null +++ b/src/additional/lessThanEqual.js @@ -0,0 +1,11 @@ +$.validator.addMethod( "lessThanEqual", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-lessThanEqual-blur" ).length ) { + target.addClass( "validate-lessThanEqual-blur" ).on( "blur.validate-lessThanEqual", function() { + $( element ).valid(); + } ); + } + + return value <= target.val(); +}, "Please enter a lesser value." ); diff --git a/src/core.js b/src/core.js index 11c57a027..f2d986118 100644 --- a/src/core.js +++ b/src/core.js @@ -1120,7 +1120,19 @@ $.extend( $.validator, { .removeData( "validator" ) .find( ".validate-equalTo-blur" ) .off( ".validate-equalTo" ) - .removeClass( "validate-equalTo-blur" ); + .removeClass( "validate-equalTo-blur" ) + .find( ".validate-lessThan-blur" ) + .off( ".validate-lessThan" ) + .removeClass( "validate-lessThan-blur" ) + .find( ".validate-lessThanEqual-blur" ) + .off( ".validate-lessThanEqual" ) + .removeClass( "validate-lessThanEqual-blur" ) + .find( ".validate-greaterThanEqual-blur" ) + .off( ".validate-greaterThanEqual" ) + .removeClass( "validate-greaterThanEqual-blur" ) + .find( ".validate-greaterThan-blur" ) + .off( ".validate-greaterThan" ) + .removeClass( "validate-greaterThan-blur" ); } }, diff --git a/test/index.html b/test/index.html index b0bf9bd3d..3235689da 100644 --- a/test/index.html +++ b/test/index.html @@ -109,7 +109,11 @@

-
+ + + + +
diff --git a/test/methods.js b/test/methods.js index 812a8b270..173a2281d 100644 --- a/test/methods.js +++ b/test/methods.js @@ -379,6 +379,26 @@ QUnit.test( "#1760 - step modulo/remainder regression tests", function( assert ) } } ); +QUnit.test( "lessThan", function( assert ) { + var v = jQuery( "#form" ).validate(), + method = $.validator.methods.lessThan, + e = $( "#value2" ); + + assert.ok( method.call( v, "1", e[ 0 ], "#value2" ), "Valid integer" ); + assert.ok( !method.call( v, "10", e[ 0 ], "#value2" ), "Invalid integer" ); + assert.ok( !method.call( v, "11", e[ 0 ], "#value2" ), "Invalid integer" ); +} ); + +QUnit.test( "lessThanEqual", function( assert ) { + var v = jQuery( "#form" ).validate(), + method = $.validator.methods.lessThanEqual, + e = $( "#value2" ); + + assert.ok( method.call( v, "1", e[ 0 ], "#value2" ), "Valid integer" ); + assert.ok( method.call( v, "10", e[ 0 ], "#value2" ), "Valid integer" ); + assert.ok( !method.call( v, "11", e[ 0 ], "#value2" ), "Invalid integer" ); +} ); + QUnit.test( "equalTo", function( assert ) { var v = jQuery( "#form" ).validate(), method = $.validator.methods.equalTo, @@ -388,6 +408,26 @@ QUnit.test( "equalTo", function( assert ) { assert.ok( method.call( v, "T", e[ 1 ], "#text2" ), "Another one" ); } ); +QUnit.test( "greaterThanEqual", function( assert ) { + var v = jQuery( "#form" ).validate(), + method = $.validator.methods.greaterThanEqual, + e = $( "#value2" ); + + assert.ok( !method.call( v, "1", e[ 0 ], "#value2" ), "Invalid integer" ); + assert.ok( method.call( v, "10", e[ 0 ], "#value2" ), "Valid integer" ); + assert.ok( method.call( v, "11", e[ 0 ], "#value2" ), "Valid integer" ); +} ); + +QUnit.test( "greaterThan", function( assert ) { + var v = jQuery( "#form" ).validate(), + method = $.validator.methods.greaterThan, + e = $( "#value2" ); + + assert.ok( !method.call( v, "1", e[ 0 ], "#value2" ), "Invalid integer" ); + assert.ok( !method.call( v, "10", e[ 0 ], "#value2" ), "Invalid integer" ); + assert.ok( method.call( v, "11", e[ 0 ], "#value2" ), "Valid integer" ); +} ); + QUnit.test( "extension", function( assert ) { var method = methodTest( "extension" ), v; diff --git a/test/test.js b/test/test.js index 1ee1d5308..79bf0cf1b 100644 --- a/test/test.js +++ b/test/test.js @@ -2440,7 +2440,7 @@ QUnit.test( "Validation triggered on radio and checkbox via click", function( as } ); QUnit.test( "destroy()", function( assert ) { - assert.expect( 6 ); + assert.expect( 14 ); var form = $( "#testForm5" ), validate = form.validate(); @@ -2451,10 +2451,21 @@ QUnit.test( "destroy()", function( assert ) { assert.equal( $( "#x1", form ).hasClass( "validate-equalTo-blur" ), true, "The blur event should be bound to this element" ); assert.equal( $( "#x2", form ).hasClass( "validate-equalTo-blur" ), true, "The blur event should be bound to this element" ); + assert.equal( $( "#y1", form ).hasClass( "validate-greaterThan-blur" ), true, "The blur event should be bound to this element" ); + assert.equal( $( "#y2", form ).hasClass( "validate-lessThan-blur" ), true, "The blur event should be bound to this element" ); + assert.equal( $( "#z1", form ).hasClass( "validate-greaterThanEqual-blur" ), true, "The blur event should be bound to this element" ); + assert.equal( $( "#z2", form ).hasClass( "validate-lessThanEqual-blur" ), true, "The blur event should be bound to this element" ); + validate.destroy(); assert.strictEqual( form.data( "validator" ), undefined ); assert.equal( $( "#x1", form ).hasClass( "validate-equalTo-blur" ), false, "The blur event should be unbound from this element" ); assert.equal( $( "#x2", form ).hasClass( "validate-equalTo-blur" ), false, "The blur event should be unbound from this element" ); + + assert.equal( $( "#y1", form ).hasClass( "validate-lessThan-blur" ), false, "The blur event should be unbound from this element" ); + assert.equal( $( "#y2", form ).hasClass( "validate-greaterThan-blur" ), false, "The blur event should be unbound from this element" ); + assert.equal( $( "#z1", form ).hasClass( "validate-equalTo-blur" ), false, "The blur event should be unbound from this element" ); + assert.equal( $( "#z2", form ).hasClass( "validate-greaterThan-blur" ), false, "The blur event should be unbound from this element" ); + } ); QUnit.test( "#1618: Errorlist containing more errors than it should", function( assert ) {