From c14f583255501d9df7921cb7c45fc3b7e0d5f239 Mon Sep 17 00:00:00 2001 From: b108 Date: Tue, 9 Apr 2013 15:51:56 +0400 Subject: [PATCH 1/2] If there is several ajax requests at one time we need to cache all results but don't show result of request which is not last --- src/jquery.autocomplete.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/jquery.autocomplete.js b/src/jquery.autocomplete.js index 7ba5d74..952a6e8 100644 --- a/src/jquery.autocomplete.js +++ b/src/jquery.autocomplete.js @@ -591,6 +591,11 @@ if (data) { callback(data); } else { + this._reqCounter = this._reqCounter || 0; + this._reqCounter++; + + var reqCounter = this._reqCounter; + var self = this; var dataType = self.options.remoteDataType === 'json' ? 'json' : 'text'; var ajaxCallback = function(data) { @@ -600,7 +605,7 @@ self.cacheWrite(filter, parsed); } self.dom.$elem.removeClass(self.options.loadingClass); - callback(parsed); + if (self._reqCounter == reqCounter) callback(parsed); }; this.dom.$elem.addClass(this.options.loadingClass); $.ajax({ From 9e4ec2d4b897103f2b66554934240f2b6aca46bf Mon Sep 17 00:00:00 2001 From: b108 Date: Tue, 9 Apr 2013 16:17:32 +0400 Subject: [PATCH 2/2] small fix --- src/jquery.autocomplete.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/jquery.autocomplete.js b/src/jquery.autocomplete.js index 952a6e8..e34a288 100644 --- a/src/jquery.autocomplete.js +++ b/src/jquery.autocomplete.js @@ -604,8 +604,10 @@ parsed = self.parseRemoteData(data); self.cacheWrite(filter, parsed); } - self.dom.$elem.removeClass(self.options.loadingClass); - if (self._reqCounter == reqCounter) callback(parsed); + if (self._reqCounter == reqCounter) { + self.dom.$elem.removeClass(self.options.loadingClass); + callback(parsed); + } }; this.dom.$elem.addClass(this.options.loadingClass); $.ajax({