From ee0ae759cec2782c812754bf5a735b9cd2ab6dd3 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Fri, 30 Mar 2012 22:10:20 -0700 Subject: [PATCH] Assume text inserted in eventTarget at end (cannot rely on selectionStart or selectionEnd). Reset eventTarget value when focus gained. --- src/main/webapp/scripts/interface.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/webapp/scripts/interface.js b/src/main/webapp/scripts/interface.js index 05aa3a9..9002e7e 100644 --- a/src/main/webapp/scripts/interface.js +++ b/src/main/webapp/scripts/interface.js @@ -508,35 +508,33 @@ GuacamoleUI.attach = function(guac) { // Monitor whether the event target is focused var eventTargetFocused = false; + // Save length for calculation of changed value + var currentLength = GuacamoleUI.eventTarget.value.length; + GuacamoleUI.eventTarget.onfocus = function() { eventTargetFocused = true; + GuacamoleUI.eventTarget.value = ""; + currentLength = 0; }; GuacamoleUI.eventTarget.onblur = function() { eventTargetFocused = false; }; - // Save length for calculation of changed value - var currentLength = GuacamoleUI.eventTarget.value.length; - // If text is input directly into event target without typing (as with // voice input, for example), type automatically. GuacamoleUI.eventTarget.oninput = function(e) { // Calculate current length and change in length - var newLength = GuacamoleUI.eventTarget.value.length; - var changeLength = newLength - currentLength; - currentLength = newLength; + var oldLength = currentLength; + currentLength = GuacamoleUI.eventTarget.value.length; // If deleted or replaced text, ignore - if (changeLength <= 0) + if (currentLength <= oldLength) return; // Get changed text - var text = GuacamoleUI.eventTarget.value.substring( - GuacamoleUI.eventTarget.selectionStart, - GuacamoleUI.eventTarget.selectionStart + changeLength - ); + var text = GuacamoleUI.eventTarget.value.substring(oldLength); // Send each character for (var i=0; i