@@ -72,14 +72,10 @@ $.widget( "ui.spinner", {
72
72
event . preventDefault ( ) ;
73
73
}
74
74
} ,
75
- keyup : function ( event ) {
76
- if ( this . spinning ) {
77
- this . _stop ( event ) ;
78
- this . _change ( event ) ;
79
- }
80
- } ,
75
+ keyup : "_stop" ,
81
76
focus : function ( ) {
82
77
uiSpinner . addClass ( "ui-state-active" ) ;
78
+ this . previous = this . options . value ;
83
79
} ,
84
80
blur : function ( event ) {
85
81
// don't clear invalid values on blur
@@ -90,6 +86,9 @@ $.widget( "ui.spinner", {
90
86
this . element . val ( value ) ;
91
87
}
92
88
uiSpinner . removeClass ( "ui-state-active" ) ;
89
+ if ( this . previous !== this . options . value ) {
90
+ this . _trigger ( "change" , event ) ;
91
+ }
93
92
}
94
93
} ) ;
95
94
@@ -112,13 +111,7 @@ $.widget( "ui.spinner", {
112
111
113
112
this . _repeat ( null , $ ( event . currentTarget ) . hasClass ( "ui-spinner-up" ) ? 1 : - 1 , event ) ;
114
113
} ,
115
- mouseup : function ( event ) {
116
- if ( this . spinning ) {
117
- this . _stop ( event ) ;
118
- // TODO: don't trigger change until the field is blurred
119
- this . _change ( event ) ;
120
- }
121
- } ,
114
+ mouseup : "_stop" ,
122
115
mouseenter : function ( event ) {
123
116
// button will add ui-state-active if mouse was down while mouseleave and kept down
124
117
if ( ! $ ( event . currentTarget ) . hasClass ( "ui-state-active" ) ) {
@@ -133,12 +126,7 @@ $.widget( "ui.spinner", {
133
126
// TODO: do we really want to consider this a stop?
134
127
// shouldn't we just stop the repeater and wait until mouseup before
135
128
// we trigger the stop event?
136
- mouseleave : function ( event ) {
137
- if ( this . spinning ) {
138
- this . _stop ( event ) ;
139
- this . _change ( event ) ;
140
- }
141
- }
129
+ mouseleave : "_stop"
142
130
} ) ;
143
131
144
132
// disable spinner if element was already disabled
@@ -186,12 +174,10 @@ $.widget( "ui.spinner", {
186
174
}
187
175
188
176
this . _spin ( ( delta > 0 ? 1 : - 1 ) * this . options . step , event ) ;
189
- clearTimeout ( this . timeout ) ;
190
- this . timeout = setTimeout ( function ( ) {
177
+ clearTimeout ( this . mousewheelTimer ) ;
178
+ this . mousewheelTimer = setTimeout ( function ( ) {
191
179
if ( this . spinning ) {
192
180
this . _stop ( event ) ;
193
- // TODO: don't trigger change until the field is blurred
194
- this . _change ( event ) ;
195
181
}
196
182
} , 100 ) ;
197
183
event . preventDefault ( ) ;
@@ -276,16 +262,17 @@ $.widget( "ui.spinner", {
276
262
} ,
277
263
278
264
_stop : function ( event ) {
265
+ if ( ! this . spinning ) {
266
+ return ;
267
+ }
268
+
279
269
clearTimeout ( this . timer ) ;
270
+ clearTimeout ( this . mousewheelTimer ) ;
280
271
this . counter = 0 ;
281
272
this . spinning = false ;
282
273
this . _trigger ( "stop" , event ) ;
283
274
} ,
284
275
285
- _change : function ( event ) {
286
- this . _trigger ( "change" , event ) ;
287
- } ,
288
-
289
276
_setOption : function ( key , value ) {
290
277
if ( key === "value" ) {
291
278
value = this . _trimValue ( this . _parse ( value ) ) ;
0 commit comments