我怎么知道<input/>在按键时的值是多少?
我在“keypress”事件上有一个事件侦听器:
input.addEventListener("keydown", function(e) { ... }
当我读取输入字段的值时,它尚未更新。有没有办法在等待“keyup”事件之前知道输入的值是多少?
注意:我尝试使用 asetTimeout(function() { ... }, 1);但它不适用于复制/粘贴(输入值未更新)。当我将超时设置为 10 毫秒时,它在我的测试中确实有效,但感觉它不是一个强大的解决方案(可能取决于硬件的速度)。
回答
也许更强大的解决方案是监听input事件?但是,这不会捕获所有不会更改/改变输入值的键盘事件(例如按下Home/End按钮):
document.querySelector('input').addEventListener('input', (e) => {
console.log(e.target.value);
});
<input type="text" />
<input type="text" />
或者,如果您真的想依赖键盘事件,那么keyup就是您想要监听的事件,因为它是在按键被解除后触发的:
document.querySelector('input').addEventListener('keyup', (e) => {
console.log(e.target.value);
});