diff --git a/misc/autocomplete.js b/misc/autocomplete.js
index 4d72005e10540faee6ef2ce2ac2ec7e77237efe3..93d5bf55d11daeeb3c376728d18a77902dabccec 100644
--- a/misc/autocomplete.js
+++ b/misc/autocomplete.js
@@ -47,7 +47,7 @@ function jsAC(input, db) {
   this.db = db;
   this.input.onkeydown = function (event) { return ac.onkeydown(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.id = 'autocomplete';
   this.popup.owner = this;
@@ -240,7 +240,7 @@ ACDB.prototype.search = function(searchString) {
   var db = this;
   this.timer = setTimeout(function() {
     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);
 }
 
@@ -263,3 +263,15 @@ ACDB.prototype.receive = function(string, xmlhttp, acdb) {
   acdb.cache[acdb.searchString] = 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();
+  }
+}
diff --git a/misc/drupal.js b/misc/drupal.js
index e289d15925b87d083d4713bea27f961b4ab9a886..cf4510a28cfed95a48fbf5fad7a02df8fd6d5c63 100644
--- a/misc/drupal.js
+++ b/misc/drupal.js
@@ -59,7 +59,7 @@ function HTTPGet(uri, callbackFunction, callbackParameter) {
         }
       }
     }
-    return true;
+    return xmlHttp;
   }
   else {
     return xmlHttp.responseText;
@@ -100,7 +100,7 @@ function HTTPPost(uri, callbackFunction, callbackParameter, object) {
         }
       }
     }
-    return true;
+    return xmlHttp;
   }
   else {
     return xmlHttp.responseText;