diff options
author | Scott González <scott.gonzalez@gmail.com> | 2013-02-22 09:15:43 -0500 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2013-02-22 09:15:43 -0500 |
commit | 2348fb8eb9ec1297a2588a23cf3447c5374bcb21 (patch) | |
tree | 49a5a4f341300db2e8dcba21fa6c94d3be32524c | |
parent | 1c5171c2547130a76710dd20108b35774551e333 (diff) | |
download | jquery-ui-2348fb8eb9ec1297a2588a23cf3447c5374bcb21.tar.gz jquery-ui-2348fb8eb9ec1297a2588a23cf3447c5374bcb21.zip |
Spinner: Call _stop() on blur. Fixes #9112 - Spinner keeps changing after losing focus.
-rw-r--r-- | tests/unit/spinner/spinner_core.js | 27 | ||||
-rw-r--r-- | ui/jquery.ui.spinner.js | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/tests/unit/spinner/spinner_core.js b/tests/unit/spinner/spinner_core.js index a1179bb35..bea5f9122 100644 --- a/tests/unit/spinner/spinner_core.js +++ b/tests/unit/spinner/spinner_core.js @@ -80,6 +80,33 @@ test( "keydown PAGE_DOWN on input, decreases value not less than min", function( equal( element.val(), 20 ); }); +asyncTest( "blur input while spinning with UP", function() { + expect( 3 ); + var value, + element = $( "#spin" ).val( 10 ).spinner(); + + function step1() { + element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); + equal( element.val(), 11 ); + setTimeout( step2, 750 ); + } + + function step2() { + value = element.val(); + ok( value > 11, "repeating while key is down" ); + element[0].blur(); + setTimeout( step3, 250 ); + } + + function step3() { + equal( element.val(), value, "stopped repeating on blur" ); + start(); + } + + element[ 0 ].focus(); + setTimeout( step1 ); +}); + test( "mouse click on up button, increases value not greater than max", function() { expect( 3 ); var element = $( "#spin" ).val( 18 ).spinner({ diff --git a/ui/jquery.ui.spinner.js b/ui/jquery.ui.spinner.js index c14ef9370..644b65239 100644 --- a/ui/jquery.ui.spinner.js +++ b/ui/jquery.ui.spinner.js @@ -102,6 +102,7 @@ $.widget( "ui.spinner", { return; } + this._stop(); this._refresh(); if ( this.previous !== this.element.val() ) { this._trigger( "change", event ); |