@@ -47,7 +47,8 @@ $.widget( "ui.autocomplete", {
4747 _create : function ( ) {
4848 var self = this ,
4949 doc = this . element [ 0 ] . ownerDocument ,
50- suppressKeyPress ;
50+ suppressKeyPress ,
51+ suppressInput ;
5152
5253 this . valueMethod = this . element [ this . element . is ( "input" ) ? "val" : "text" ] ;
5354
@@ -63,10 +64,12 @@ $.widget( "ui.autocomplete", {
6364 . bind ( "keydown.autocomplete" , function ( event ) {
6465 if ( self . options . disabled || self . element . attr ( "readonly" ) ) {
6566 suppressKeyPress = true ;
67+ suppressInput = true ;
6668 return ;
6769 }
6870
6971 suppressKeyPress = false ;
72+ suppressInput = false ;
7073 var keyCode = $ . ui . keyCode ;
7174 switch ( event . keyCode ) {
7275 case keyCode . PAGE_UP :
@@ -110,15 +113,8 @@ $.widget( "ui.autocomplete", {
110113 self . close ( event ) ;
111114 break ;
112115 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 ) ;
122118 break ;
123119 }
124120 } )
@@ -150,6 +146,14 @@ $.widget( "ui.autocomplete", {
150146 break ;
151147 }
152148 } )
149+ . bind ( "input.autocomplete" , function ( event ) {
150+ if ( suppressInput ) {
151+ suppressInput = false ;
152+ event . preventDefault ( ) ;
153+ return ;
154+ }
155+ self . _searchTimeout ( event ) ;
156+ } )
153157 . bind ( "focus.autocomplete" , function ( ) {
154158 if ( self . options . disabled ) {
155159 return ;
@@ -317,6 +321,17 @@ $.widget( "ui.autocomplete", {
317321 }
318322 } ,
319323
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+
320335 search : function ( value , event ) {
321336 value = value != null ? value : this . _value ( ) ;
322337
0 commit comments