Skip to content

Commit 2348fb8

Browse files
committed
Spinner: Call _stop() on blur. Fixes #9112 - Spinner keeps changing after losing focus.
1 parent 1c5171c commit 2348fb8

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

tests/unit/spinner/spinner_core.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,33 @@ test( "keydown PAGE_DOWN on input, decreases value not less than min", function(
8080
equal( element.val(), 20 );
8181
});
8282

83+
asyncTest( "blur input while spinning with UP", function() {
84+
expect( 3 );
85+
var value,
86+
element = $( "#spin" ).val( 10 ).spinner();
87+
88+
function step1() {
89+
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
90+
equal( element.val(), 11 );
91+
setTimeout( step2, 750 );
92+
}
93+
94+
function step2() {
95+
value = element.val();
96+
ok( value > 11, "repeating while key is down" );
97+
element[0].blur();
98+
setTimeout( step3, 250 );
99+
}
100+
101+
function step3() {
102+
equal( element.val(), value, "stopped repeating on blur" );
103+
start();
104+
}
105+
106+
element[ 0 ].focus();
107+
setTimeout( step1 );
108+
});
109+
83110
test( "mouse click on up button, increases value not greater than max", function() {
84111
expect( 3 );
85112
var element = $( "#spin" ).val( 18 ).spinner({

ui/jquery.ui.spinner.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ $.widget( "ui.spinner", {
102102
return;
103103
}
104104

105+
this._stop();
105106
this._refresh();
106107
if ( this.previous !== this.element.val() ) {
107108
this._trigger( "change", event );

0 commit comments

Comments
 (0)