]> source.dussan.org Git - jquery-ui.git/commitdiff
Spinner: Add isValid method. Fixes #9542 - Spinner: Add isValid() method 1077/head
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Wed, 11 Sep 2013 20:00:27 +0000 (22:00 +0200)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Thu, 12 Sep 2013 22:16:31 +0000 (00:16 +0200)
tests/unit/spinner/spinner_methods.js
ui/jquery.ui.spinner.js

index 4f44a73aef12233999fa60d2f69deb8245e2b200..41c991be304089cf9253af715d4162b9ed06a97a 100644 (file)
@@ -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({
index c022413dc2435de2279661e69530486c9ee35584..a4912fc7e7504da104dcd78b8d04b1bb57161def 100644 (file)
@@ -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;