#57255: Cancel autocomplete requests when the user tabs out of the field
parent
34eefb7072
commit
a81547d5b3
|
|
@ -47,7 +47,7 @@ function jsAC(input, db) {
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.input.onkeydown = function (event) { return ac.onkeydown(this, event); };
|
this.input.onkeydown = function (event) { return ac.onkeydown(this, event); };
|
||||||
this.input.onkeyup = function (event) { ac.onkeyup(this, event) };
|
this.input.onkeyup = function (event) { ac.onkeyup(this, event) };
|
||||||
this.input.onblur = function () { ac.hidePopup() };
|
this.input.onblur = function () { ac.hidePopup(); ac.db.cancel(); };
|
||||||
this.popup = document.createElement('div');
|
this.popup = document.createElement('div');
|
||||||
this.popup.id = 'autocomplete';
|
this.popup.id = 'autocomplete';
|
||||||
this.popup.owner = this;
|
this.popup.owner = this;
|
||||||
|
|
@ -240,7 +240,7 @@ ACDB.prototype.search = function(searchString) {
|
||||||
var db = this;
|
var db = this;
|
||||||
this.timer = setTimeout(function() {
|
this.timer = setTimeout(function() {
|
||||||
addClass(db.owner.input, 'throbbing');
|
addClass(db.owner.input, 'throbbing');
|
||||||
HTTPGet(db.uri +'/'+ encodeURIComponent(searchString), db.receive, db);
|
db.transport = HTTPGet(db.uri +'/'+ encodeURIComponent(searchString), db.receive, db);
|
||||||
}, this.delay);
|
}, this.delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -263,3 +263,15 @@ ACDB.prototype.receive = function(string, xmlhttp, acdb) {
|
||||||
acdb.cache[acdb.searchString] = matches;
|
acdb.cache[acdb.searchString] = matches;
|
||||||
acdb.owner.found(matches);
|
acdb.owner.found(matches);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancels the current autocomplete request
|
||||||
|
*/
|
||||||
|
ACDB.prototype.cancel = function() {
|
||||||
|
if (this.owner) removeClass(this.owner.input, 'throbbing');
|
||||||
|
if (this.timer) clearTimeout(this.timer);
|
||||||
|
if (this.transport) {
|
||||||
|
this.transport.onreadystatechange = function() {};
|
||||||
|
this.transport.abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ function HTTPGet(uri, callbackFunction, callbackParameter) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return xmlHttp;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return xmlHttp.responseText;
|
return xmlHttp.responseText;
|
||||||
|
|
@ -100,7 +100,7 @@ function HTTPPost(uri, callbackFunction, callbackParameter, object) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return xmlHttp;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return xmlHttp.responseText;
|
return xmlHttp.responseText;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue