insert at last cursor position when pressing button

This commit is contained in:
filifa 2025-12-11 23:49:34 -05:00
parent 0bd3b5682d
commit 5d004370e3
1 changed files with 13 additions and 3 deletions

16
main.js
View File

@ -153,9 +153,13 @@ function calculate() {
}
let currentInput = null;
let selectionStart = null;
let selectionEnd = null;
function setCurrentInput() {
currentInput = this;
selectionStart = this.selectionStart;
selectionEnd = this.selectionEnd;
}
function clear() {
@ -164,8 +168,14 @@ function clear() {
}
function keyPress(c) {
currentInput.value += c;
// FIXME not working with modulus
// errors in logs on each key press
// wonder if it's an issue with it being a number type
currentInput.focus();
const begin = currentInput.value.slice(0, selectionStart);
const end = currentInput.value.slice(selectionEnd);
currentInput.value = begin + c + end;
currentInput.setSelectionRange(selectionEnd+1, selectionEnd+1);
}
document.querySelector("#expr").addEventListener("focus", setCurrentInput);
@ -195,5 +205,5 @@ document.querySelector("#pow").addEventListener("click", () => keyPress("^"));
document.querySelector("#clear").addEventListener("click", clear);
document.querySelector("#enter").addEventListener("click", calculate);
// FIXME buttons don't work if you try to insert in the middle of the text
// TODO backspace is probably going to be tricky
// TODO backspace might be tricky
// TODO implement square root and inverse keys