删除输入中输入的最后一个字符 - Javascript

Delete last character entered in input - Javascript

我有以下输入:

<input id="myInput" type='text' onkeyup="validate(this)" />

在我的 .js 文件中有:

var input = document.getElementById("myInput");

input.addEventListener("keyup", function (e) {
    console.log(e.key);

});

function validate(characters) {
    console.log(characters.value);
}

我的问题是:我可以删除与最后输入的字符对应的e.key吗?

Note:

Deleting the last character of characters is not a solution, since the character can be placed in any position.

添加 keydown 事件侦听器并防止某些特定情况下的默认行为:

input.addEventListener("keydown", function (e) {
    if (e.key === 'd') {
        e.preventDefault()
    }
});

这将阻止 'd' 输入

你可以根据插入符号的位置来做

const input = document.querySelector('input')

input.addEventListener("keyup", e => {
  const position = e.target.selectionStart
  input.value = input.value.substring(0, position-1) + input.value.substring(position+1)
})
<input type="text"/>

或者您可以跟踪更改

const input = document.querySelector('input')

let previousValue = input.value
input.addEventListener("keyup", e => {
  // if it matches your condition
  input.value = previousValue

  // reassign so that it works again next time
  previousValue = input.value
})
<input type="text"/>

当然,您需要为这些添加条件,否则您根本无法输入。并检查按下了哪些键,因为有些键不添加字符(甚至删除一些)。您可能想查看 "change" 事件而不是 "keyup".