From 9c21d6723c43ef2f3a993d6303f2896cee421a8b Mon Sep 17 00:00:00 2001 From: Robert Byrne Date: Sun, 29 Dec 2013 21:41:04 +0000 Subject: [PATCH] #8 Delete character relative to caret position --- data/js/UserInteraction.js | 104 ++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 58 insertions(+), 48 deletions(-) diff --git a/data/js/UserInteraction.js b/data/js/UserInteraction.js index 755b1e0..74e11f5 100644 --- a/data/js/UserInteraction.js +++ b/data/js/UserInteraction.js @@ -3,6 +3,32 @@ var FoxyCalc_Panel = { ansValue: "", + setCaretPosition: function(elemId, caretPos) { + + var elem = document.getElementById(elemId); + + if(elem != null) { + + if(elem.createTextRange) { + + elem.createTextRange().move('character', caretPos); + elem.createTextRange().select(); + + } else { + + if(elem.selectionStart) { + + elem.focus(); + elem.setSelectionRange(caretPos, caretPos); + + } else { + + elem.focus(); + } + } + } + }, + submitListener: function() { document.getElementById('inputbox').onkeyup = function(event) { @@ -15,8 +41,20 @@ var FoxyCalc_Panel = { del: function() { - document.getElementById("inputbox").value = document.getElementById("inputbox").value.slice(0,-1); - document.getElementById("inputbox").focus(); + + var startPos = 0; + + // insert text at caret position + if (document.getElementById("inputbox").selectionStart || document.getElementById("inputbox").selectionStart == '0') { + startPos = document.getElementById("inputbox").selectionStart; + var endPos = document.getElementById("inputbox").selectionEnd; + document.getElementById("inputbox").value = document.getElementById("inputbox").value.substring(0, startPos).slice(0, -1) + + document.getElementById("inputbox").value.substring(endPos, document.getElementById("inputbox").value.length); + } else { + document.getElementById("inputbox").value += value; + } + + this.setCaretPosition('inputbox', startPos - 1); }, @@ -26,58 +64,30 @@ var FoxyCalc_Panel = { }, - insert: function(value) { + insert: function(value) { - // to move caret position when value added to input - function setCaretPosition(elemId, caretPos) { - var elem = document.getElementById(elemId); - - if(elem != null) { - - if(elem.createTextRange) { - - elem.createTextRange().move('character', caretPos); - elem.createTextRange().select(); - - } else { - - if(elem.selectionStart) { - - elem.focus(); - elem.setSelectionRange(caretPos, caretPos); - - } else { - - elem.focus(); - } - } - } - } - - - - var startPos = 0; + var startPos = 0; - // insert text at caret position - if (document.getElementById("inputbox").selectionStart || document.getElementById("inputbox").selectionStart == '0') { - startPos = document.getElementById("inputbox").selectionStart; - var endPos = document.getElementById("inputbox").selectionEnd; - document.getElementById("inputbox").value = document.getElementById("inputbox").value.substring(0, startPos) - + value + // insert text at caret position + if (document.getElementById("inputbox").selectionStart || document.getElementById("inputbox").selectionStart == '0') { + startPos = document.getElementById("inputbox").selectionStart; + var endPos = document.getElementById("inputbox").selectionEnd; + document.getElementById("inputbox").value = document.getElementById("inputbox").value.substring(0, startPos) + + value + document.getElementById("inputbox").value.substring(endPos, document.getElementById("inputbox").value.length); - } else { - document.getElementById("inputbox").value += value; - } + } else { + document.getElementById("inputbox").value += value; + } - // # of spaces to move caret - if (value === parseInt(value)){ + // # of spaces to move caret + if (value === parseInt(value)){ - setCaretPosition('inputbox', startPos + 1); + this.setCaretPosition('inputbox', startPos + 1); - } else{ + } else{ - setCaretPosition('inputbox', startPos + value.length); - } + this.setCaretPosition('inputbox', startPos + value.length); + } }, diff --git a/package.json b/package.json index fca3813..07e4d5c 100644 --- a/package.json +++ b/package.json @@ -8,5 +8,5 @@ "icon":"data/images/icon.png", "icon64":"data/images/icon64.png", "license": "GNU GPL v3.0", - "version": "1.0.2" + "version": "1.0.3" }