diff --git a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 b/app/assets/javascripts/discourse/lib/autocomplete.js.es6
index 3a7e2380f..03f91d508 100644
--- a/app/assets/javascripts/discourse/lib/autocomplete.js.es6
+++ b/app/assets/javascripts/discourse/lib/autocomplete.js.es6
@@ -259,19 +259,20 @@ export default function(options) {
   });
 
   $(this).keypress(function(e) {
-    var caretPosition = Discourse.Utilities.caretPosition(me[0]),
-        term;
+    var caretPosition, term;
 
     if (!options.key) return;
 
     // keep hunting backwards till you hit a the @ key
     if (e.which === options.key.charCodeAt(0)) {
+      caretPosition = Discourse.Utilities.caretPosition(me[0]);
       var prevChar = me.val().charAt(caretPosition - 1);
       if (!prevChar || /\s/.test(prevChar)) {
         completeStart = completeEnd = caretPosition;
         updateAutoComplete(options.dataSource(""));
       }
     } else if ((completeStart !== null) && (e.charCode !== 0)) {
+      caretPosition = Discourse.Utilities.caretPosition(me[0]),
       term = me.val().substring(completeStart + (options.key ? 1 : 0), caretPosition);
       term += String.fromCharCode(e.charCode);
       updateAutoComplete(options.dataSource(term));