Skip to content

Commit

Permalink
#8 Delete character relative to caret position
Browse files Browse the repository at this point in the history
  • Loading branch information
bobbyrne01 committed Dec 29, 2013
1 parent 349befe commit 9c21d67
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 48 deletions.
104 changes: 57 additions & 47 deletions data/js/UserInteraction.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {

Expand All @@ -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);
},


Expand All @@ -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);
}
},


Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}

0 comments on commit 9c21d67

Please sign in to comment.