From 1552fc8a05ad351650b2a56c5c31905c671f1cdf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=CC=88rn=20Zaefferer?= Date: Wed, 11 Sep 2013 22:00:27 +0200 Subject: [PATCH] Spinner: Add isValid method. Fixes #9542 - Spinner: Add isValid() method --- tests/unit/spinner/spinner_methods.js | 32 +++++++++++++++++++++++++++ ui/jquery.ui.spinner.js | 12 ++++++++++ 2 files changed, 44 insertions(+) diff --git a/tests/unit/spinner/spinner_methods.js b/tests/unit/spinner/spinner_methods.js index 4f44a73ae..41c991be3 100644 --- a/tests/unit/spinner/spinner_methods.js +++ b/tests/unit/spinner/spinner_methods.js @@ -73,6 +73,38 @@ test( "enable", function() { equal( 2, element.val(), "keyboard - value changes on key UP" ); }); +test( "isValid", function() { + expect( 8 ); + var element = $( "#spin" ).spinner({ + min: 0, + max: 10, + step: 2 + }), + spinner = element.spinner( "instance" ); + ok( !spinner.isValid(), "initial state is invalid" ); + + element.val( "this is not a number" ); + ok( !spinner.isValid(), "text string is not valid" ); + + element.val( "0" ); + ok( spinner.isValid(), "min value is valid" ); + + element.val( "10" ); + ok( spinner.isValid(), "max value is valid" ); + + element.val( "4" ); + ok( spinner.isValid(), "inbetween step is valid" ); + + element.val( "-1" ); + ok( !spinner.isValid(), "below min is invalid" ); + + element.val( "11" ); + ok( !spinner.isValid(), "above max is invalid" ); + + element.val( "1" ); + ok( !spinner.isValid(), "step mismatch is invalid" ); +}); + test( "pageDown", function() { expect( 4 ); var element = $( "#spin" ).val( -12 ).spinner({ diff --git a/ui/jquery.ui.spinner.js b/ui/jquery.ui.spinner.js index c022413dc..a4912fc7e 100644 --- a/ui/jquery.ui.spinner.js +++ b/ui/jquery.ui.spinner.js @@ -418,6 +418,18 @@ $.widget( "ui.spinner", { }); }, + isValid: function() { + var value = this.value(); + + // null is invalid + if ( value === null ) { + return false; + } + + // if value gets adjusted, it's invalid + return value === this._adjustValue( value ); + }, + // update the value without triggering change _value: function( value, allowAny ) { var parsed; -- 2.39.5