@@ -47,7 +47,8 @@ $.widget( "ui.autocomplete", {
47
47
_create : function ( ) {
48
48
var self = this ,
49
49
doc = this . element [ 0 ] . ownerDocument ,
50
- suppressKeyPress ;
50
+ suppressKeyPress ,
51
+ suppressInput ;
51
52
52
53
this . valueMethod = this . element [ this . element . is ( "input" ) ? "val" : "text" ] ;
53
54
@@ -63,10 +64,12 @@ $.widget( "ui.autocomplete", {
63
64
. bind ( "keydown.autocomplete" , function ( event ) {
64
65
if ( self . options . disabled || self . element . attr ( "readonly" ) ) {
65
66
suppressKeyPress = true ;
67
+ suppressInput = true ;
66
68
return ;
67
69
}
68
70
69
71
suppressKeyPress = false ;
72
+ suppressInput = false ;
70
73
var keyCode = $ . ui . keyCode ;
71
74
switch ( event . keyCode ) {
72
75
case keyCode . PAGE_UP :
@@ -110,15 +113,8 @@ $.widget( "ui.autocomplete", {
110
113
self . close ( event ) ;
111
114
break ;
112
115
default :
113
- // keypress is triggered before the input value is changed
114
- clearTimeout ( self . searching ) ;
115
- self . searching = setTimeout ( function ( ) {
116
- // only search if the value has changed
117
- if ( self . term != self . _value ( ) ) {
118
- self . selectedItem = null ;
119
- self . search ( null , event ) ;
120
- }
121
- } , self . options . delay ) ;
116
+ // search timeout should be triggered before the input value is changed
117
+ self . _searchTimeout ( event ) ;
122
118
break ;
123
119
}
124
120
} )
@@ -150,6 +146,14 @@ $.widget( "ui.autocomplete", {
150
146
break ;
151
147
}
152
148
} )
149
+ . bind ( "input.autocomplete" , function ( event ) {
150
+ if ( suppressInput ) {
151
+ suppressInput = false ;
152
+ event . preventDefault ( ) ;
153
+ return ;
154
+ }
155
+ self . _searchTimeout ( event ) ;
156
+ } )
153
157
. bind ( "focus.autocomplete" , function ( ) {
154
158
if ( self . options . disabled ) {
155
159
return ;
@@ -317,6 +321,17 @@ $.widget( "ui.autocomplete", {
317
321
}
318
322
} ,
319
323
324
+ _searchTimeout : function ( event ) {
325
+ var self = this ;
326
+ self . searching = setTimeout ( function ( ) {
327
+ // only search if the value has changed
328
+ if ( self . term != self . element . val ( ) ) {
329
+ self . selectedItem = null ;
330
+ self . search ( null , event ) ;
331
+ }
332
+ } , self . options . delay ) ;
333
+ } ,
334
+
320
335
search : function ( value , event ) {
321
336
value = value != null ? value : this . _value ( ) ;
322
337
0 commit comments