@@ -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