删除输入中输入的最后一个字符 - 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"
.
我有以下输入:
<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"
.