Autocomplete: Track pending requests and only remove the loading class when the last request completes. Fixes #6761 - Autocomplete: Loading class removed when multiple Ajax requests occur.

This commit is contained in:
Scott González 2010-12-17 11:15:17 -05:00
parent d2a12ff825
commit 2aabc3911c

View File

@ -26,6 +26,9 @@ $.widget( "ui.autocomplete", {
}, },
source: null source: null
}, },
pending: 0,
_create: function() { _create: function() {
var self = this, var self = this,
doc = this.element[ 0 ].ownerDocument, doc = this.element[ 0 ].ownerDocument,
@ -291,6 +294,7 @@ $.widget( "ui.autocomplete", {
}, },
_search: function( value ) { _search: function( value ) {
this.pending++;
this.element.addClass( "ui-autocomplete-loading" ); this.element.addClass( "ui-autocomplete-loading" );
this.source( { term: value }, this.response ); this.source( { term: value }, this.response );
@ -304,7 +308,10 @@ $.widget( "ui.autocomplete", {
} else { } else {
this.close(); this.close();
} }
this.element.removeClass( "ui-autocomplete-loading" ); this.pending--;
if ( !this.pending ) {
this.element.removeClass( "ui-autocomplete-loading" );
}
}, },
close: function( event ) { close: function( event ) {