diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2013-04-04 00:09:15 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2013-04-04 00:09:15 -0400 |
commit | 70225986558be947cad393192bd1c8efee054673 (patch) | |
tree | dc3086495613795ae015ded10b3cdf9f01c05893 /askbot/media/js/utils.js | |
parent | dbddb20b09b327e23161cf512f0149d4972cf277 (diff) | |
download | askbot-70225986558be947cad393192bd1c8efee054673.tar.gz askbot-70225986558be947cad393192bd1c8efee054673.tar.bz2 askbot-70225986558be947cad393192bd1c8efee054673.zip |
tweaked autocompleter to prevent launching new search when previous did not return
Diffstat (limited to 'askbot/media/js/utils.js')
-rw-r--r-- | askbot/media/js/utils.js | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/askbot/media/js/utils.js b/askbot/media/js/utils.js index ef3b3e2c..173bc8f8 100644 --- a/askbot/media/js/utils.js +++ b/askbot/media/js/utils.js @@ -2225,6 +2225,8 @@ var AutoCompleter = function(options) { */ this.finishOnBlur_ = true; + this._isRunning = false; + this.options.minChars = parseInt(this.options.minChars, 10); if (isNaN(this.options.minChars) || this.options.minChars < 1) { this.options.minChars = 2; @@ -2466,11 +2468,17 @@ AutoCompleter.prototype.activateNow = function() { } }; +AutoCompleter.prototype.setIsRunning = function(isRunning) { + this._isRunning = isRunning; +}; + AutoCompleter.prototype.fetchData = function(value) { var self = this; - this.fetchRemoteData(value, function(remoteData) { - self.filterAndShowResults(remoteData, value); - }); + if (this._isRunning === false) { + this.fetchRemoteData(value, function(remoteData) { + self.filterAndShowResults(remoteData, value); + }); + } }; AutoCompleter.prototype.fetchRemoteData = function(filter, callback) { @@ -2496,11 +2504,21 @@ AutoCompleter.prototype.fetchRemoteData = function(filter, callback) { }; $.ajax({ url: this.makeUrl(filter), - success: ajaxCallback, + success: function(data) { + ajaxCallback(data); + self.setIsRunning(false); + //if query changed - rerun the search immediately + var newQuery = self.getValue(); + if (newQuery && newQuery !== filter) { + self.activateNow(); + } + }, error: function() { ajaxCallback(false); + self.setIsRunning(false); } }); + self.setIsRunning(true); } }; |