@@ -46,7 +46,7 @@ $.widget( "ui.spinner", {
46
46
_create : function ( ) {
47
47
this . _value ( this . options . value ) ;
48
48
this . _draw ( ) ;
49
- this . _mousewheel ( ) ;
49
+ this . _bind ( this . _events ) ;
50
50
this . _refresh ( ) ;
51
51
} ,
52
52
@@ -64,6 +64,79 @@ $.widget( "ui.spinner", {
64
64
return options ;
65
65
} ,
66
66
67
+ _events : {
68
+ keydown : function ( event ) {
69
+ if ( this . _start ( event ) && this . _keydown ( event ) ) {
70
+ event . preventDefault ( ) ;
71
+ }
72
+ } ,
73
+ keyup : "_stop" ,
74
+ focus : function ( ) {
75
+ this . uiSpinner . addClass ( "ui-state-active" ) ;
76
+ this . previous = this . element . val ( ) ;
77
+ } ,
78
+ blur : function ( event ) {
79
+ // don't clear invalid values on blur
80
+ var value = this . element . val ( ) ;
81
+ this . _value ( value ) ;
82
+ if ( this . element . val ( ) === "" ) {
83
+ this . element . val ( value ) ;
84
+ }
85
+ this . uiSpinner . removeClass ( "ui-state-active" ) ;
86
+ // TODO: what should trigger change?
87
+ // element.val() or options.value?
88
+ if ( this . previous !== this . element . val ( ) ) {
89
+ this . _trigger ( "change" , event ) ;
90
+ }
91
+ } ,
92
+ mousewheel : function ( event , delta ) {
93
+ if ( ! delta ) {
94
+ return ;
95
+ }
96
+ if ( ! this . spinning && ! this . _start ( event ) ) {
97
+ return false ;
98
+ }
99
+
100
+ this . _spin ( ( delta > 0 ? 1 : - 1 ) * this . options . step , event ) ;
101
+ clearTimeout ( this . mousewheelTimer ) ;
102
+ this . mousewheelTimer = setTimeout ( function ( ) {
103
+ if ( this . spinning ) {
104
+ this . _stop ( event ) ;
105
+ }
106
+ } , 100 ) ;
107
+ event . preventDefault ( ) ;
108
+ } ,
109
+ "mousedown .ui-spinner-button" : function ( event ) {
110
+ // ensure focus is on (or stays on) the text field
111
+ event . preventDefault ( ) ;
112
+ if ( document . activeElement !== this . element [ 0 ] ) {
113
+ this . element . focus ( ) ;
114
+ }
115
+
116
+ if ( this . _start ( event ) === false ) {
117
+ return ;
118
+ }
119
+
120
+ this . _repeat ( null , $ ( event . currentTarget ) . hasClass ( "ui-spinner-up" ) ? 1 : - 1 , event ) ;
121
+ } ,
122
+ "mouseup .ui-spinner-button" : "_stop" ,
123
+ "mouseenter .ui-spinner-button" : function ( event ) {
124
+ // button will add ui-state-active if mouse was down while mouseleave and kept down
125
+ if ( ! $ ( event . currentTarget ) . hasClass ( "ui-state-active" ) ) {
126
+ return ;
127
+ }
128
+
129
+ if ( this . _start ( event ) === false ) {
130
+ return false ;
131
+ }
132
+ this . _repeat ( null , $ ( event . currentTarget ) . hasClass ( "ui-spinner-up" ) ? 1 : - 1 , event ) ;
133
+ } ,
134
+ // TODO: do we really want to consider this a stop?
135
+ // shouldn't we just stop the repeater and wait until mouseup before
136
+ // we trigger the stop event?
137
+ "mouseleave .ui-spinner-button" : "_stop"
138
+ } ,
139
+
67
140
_draw : function ( ) {
68
141
var uiSpinner = this . uiSpinner = this . element
69
142
. addClass ( "ui-spinner-input" )
@@ -75,69 +148,12 @@ $.widget( "ui.spinner", {
75
148
this . _hoverable ( uiSpinner ) ;
76
149
77
150
this . element . attr ( "role" , "spinbutton" ) ;
78
- this . _bind ( {
79
- keydown : function ( event ) {
80
- if ( this . _start ( event ) && this . _keydown ( event ) ) {
81
- event . preventDefault ( ) ;
82
- }
83
- } ,
84
- keyup : "_stop" ,
85
- focus : function ( ) {
86
- uiSpinner . addClass ( "ui-state-active" ) ;
87
- this . previous = this . element . val ( ) ;
88
- } ,
89
- blur : function ( event ) {
90
- // don't clear invalid values on blur
91
- var value = this . element . val ( ) ;
92
- this . _value ( value ) ;
93
- if ( this . element . val ( ) === "" ) {
94
- this . element . val ( value ) ;
95
- }
96
- uiSpinner . removeClass ( "ui-state-active" ) ;
97
- // TODO: what should trigger change?
98
- // element.val() or options.value?
99
- if ( this . previous !== this . element . val ( ) ) {
100
- this . _trigger ( "change" , event ) ;
101
- }
102
- }
103
- } ) ;
104
151
105
152
// button bindings
106
153
this . buttons = uiSpinner . find ( ".ui-spinner-button" )
107
154
. attr ( "tabIndex" , - 1 )
108
155
. button ( )
109
156
. removeClass ( "ui-corner-all" ) ;
110
- this . _bind ( this . buttons , {
111
- mousedown : function ( event ) {
112
- // ensure focus is on (or stays on) the text field
113
- event . preventDefault ( ) ;
114
- if ( document . activeElement !== this . element [ 0 ] ) {
115
- this . element . focus ( ) ;
116
- }
117
-
118
- if ( this . _start ( event ) === false ) {
119
- return ;
120
- }
121
-
122
- this . _repeat ( null , $ ( event . currentTarget ) . hasClass ( "ui-spinner-up" ) ? 1 : - 1 , event ) ;
123
- } ,
124
- mouseup : "_stop" ,
125
- mouseenter : function ( event ) {
126
- // button will add ui-state-active if mouse was down while mouseleave and kept down
127
- if ( ! $ ( event . currentTarget ) . hasClass ( "ui-state-active" ) ) {
128
- return ;
129
- }
130
-
131
- if ( this . _start ( event ) === false ) {
132
- return false ;
133
- }
134
- this . _repeat ( null , $ ( event . currentTarget ) . hasClass ( "ui-spinner-up" ) ? 1 : - 1 , event ) ;
135
- } ,
136
- // TODO: do we really want to consider this a stop?
137
- // shouldn't we just stop the repeater and wait until mouseup before
138
- // we trigger the stop event?
139
- mouseleave : "_stop"
140
- } ) ;
141
157
142
158
// disable spinner if element was already disabled
143
159
if ( this . options . disabled ) {
@@ -169,32 +185,6 @@ $.widget( "ui.spinner", {
169
185
return false ;
170
186
} ,
171
187
172
- _mousewheel : function ( ) {
173
- // need the delta normalization that mousewheel plugin provides
174
- if ( ! $ . fn . mousewheel ) {
175
- return ;
176
- }
177
- this . _bind ( {
178
- mousewheel : function ( event , delta ) {
179
- if ( ! delta ) {
180
- return ;
181
- }
182
- if ( ! this . spinning && ! this . _start ( event ) ) {
183
- return false ;
184
- }
185
-
186
- this . _spin ( ( delta > 0 ? 1 : - 1 ) * this . options . step , event ) ;
187
- clearTimeout ( this . mousewheelTimer ) ;
188
- this . mousewheelTimer = setTimeout ( function ( ) {
189
- if ( this . spinning ) {
190
- this . _stop ( event ) ;
191
- }
192
- } , 100 ) ;
193
- event . preventDefault ( ) ;
194
- }
195
- } ) ;
196
- } ,
197
-
198
188
_uiSpinnerHtml : function ( ) {
199
189
return "<span class='ui-spinner ui-state-default ui-widget ui-widget-content ui-corner-all'></span>" ;
200
190
} ,
0 commit comments