@@ -39,6 +39,8 @@ $.widget( "ui.autocomplete", {
39
39
doc = this . element [ 0 ] . ownerDocument ,
40
40
suppressKeyPress ;
41
41
42
+ this . valueMethod = this . element [ this . element . is ( "input" ) ? "val" : "text" ] ;
43
+
42
44
this . element
43
45
. addClass ( "ui-autocomplete-input" )
44
46
. attr ( "autocomplete" , "off" )
@@ -89,15 +91,15 @@ $.widget( "ui.autocomplete", {
89
91
self . menu . select ( event ) ;
90
92
break ;
91
93
case keyCode . ESCAPE :
92
- self . element . val ( self . term ) ;
94
+ self . _value ( self . term ) ;
93
95
self . close ( event ) ;
94
96
break ;
95
97
default :
96
98
// keypress is triggered before the input value is changed
97
99
clearTimeout ( self . searching ) ;
98
100
self . searching = setTimeout ( function ( ) {
99
101
// only search if the value has changed
100
- if ( self . term != self . element . val ( ) ) {
102
+ if ( self . term != self . _value ( ) ) {
101
103
self . selectedItem = null ;
102
104
self . search ( null , event ) ;
103
105
}
@@ -117,7 +119,7 @@ $.widget( "ui.autocomplete", {
117
119
}
118
120
119
121
self . selectedItem = null ;
120
- self . previous = self . element . val ( ) ;
122
+ self . previous = self . _value ( ) ;
121
123
} )
122
124
. bind ( "blur.autocomplete" , function ( event ) {
123
125
if ( self . options . disabled ) {
@@ -170,7 +172,7 @@ $.widget( "ui.autocomplete", {
170
172
if ( false !== self . _trigger ( "focus" , event , { item : item } ) ) {
171
173
// use value to match what will end up in the input, if it was a key event
172
174
if ( / ^ k e y / . test ( event . originalEvent . type ) ) {
173
- self . element . val ( item . value ) ;
175
+ self . _value ( item . value ) ;
174
176
}
175
177
}
176
178
} ,
@@ -192,11 +194,11 @@ $.widget( "ui.autocomplete", {
192
194
}
193
195
194
196
if ( false !== self . _trigger ( "select" , event , { item : item } ) ) {
195
- self . element . val ( item . value ) ;
197
+ self . _value ( item . value ) ;
196
198
}
197
199
// reset the term after the select event
198
200
// this allows custom select handling to work properly
199
- self . term = self . element . val ( ) ;
201
+ self . term = self . _value ( ) ;
200
202
201
203
self . close ( event ) ;
202
204
self . selectedItem = item ;
@@ -205,8 +207,8 @@ $.widget( "ui.autocomplete", {
205
207
// don't set the value of the text field if it's already correct
206
208
// this prevents moving the cursor unnecessarily
207
209
if ( self . menu . element . is ( ":visible" ) &&
208
- ( self . element . val ( ) !== self . term ) ) {
209
- self . element . val ( self . term ) ;
210
+ ( self . _value ( ) !== self . term ) ) {
211
+ self . _value ( self . term ) ;
210
212
}
211
213
}
212
214
} )
@@ -279,10 +281,10 @@ $.widget( "ui.autocomplete", {
279
281
} ,
280
282
281
283
search : function ( value , event ) {
282
- value = value != null ? value : this . element . val ( ) ;
284
+ value = value != null ? value : this . _value ( ) ;
283
285
284
286
// always save the actual value, not the one passed as an argument
285
- this . term = this . element . val ( ) ;
287
+ this . term = this . _value ( ) ;
286
288
287
289
if ( value . length < this . options . minLength ) {
288
290
return this . close ( event ) ;
@@ -327,7 +329,7 @@ $.widget( "ui.autocomplete", {
327
329
} ,
328
330
329
331
_change : function ( event ) {
330
- if ( this . previous !== this . element . val ( ) ) {
332
+ if ( this . previous !== this . _value ( ) ) {
331
333
this . _trigger ( "change" , event , { item : this . selectedItem } ) ;
332
334
}
333
335
} ,
@@ -397,7 +399,7 @@ $.widget( "ui.autocomplete", {
397
399
}
398
400
if ( this . menu . first ( ) && / ^ p r e v i o u s / . test ( direction ) ||
399
401
this . menu . last ( ) && / ^ n e x t / . test ( direction ) ) {
400
- this . element . val ( this . term ) ;
402
+ this . _value ( this . term ) ;
401
403
this . menu . deactivate ( ) ;
402
404
return ;
403
405
}
@@ -406,6 +408,10 @@ $.widget( "ui.autocomplete", {
406
408
407
409
widget : function ( ) {
408
410
return this . menu . element ;
411
+ } ,
412
+
413
+ _value : function ( value ) {
414
+ return this . valueMethod . apply ( this . element , arguments ) ;
409
415
}
410
416
} ) ;
411
417
0 commit comments