第一次keypress
事件触发时,即使输入有值,它也会记录一个空输入值。第二次它记录该值,但与输入值相比晚了一次击键。您可以在下一个示例中检查此行为:
document.addEventListener('DOMContentLoaded', () =>
{
const input = document.querySelector('input');
input.addEventListener('keypress', e =>
{
console.log(e.target.value);
});
});
<input type="text"/>
然而,下一个解决方法使它工作,即使我传递0ms
.
document.addEventListener('DOMContentLoaded', () =>
{
const input = document.querySelector('input');
input.addEventListener('keypress', e =>
{
setTimeout(() => console.log(e.target.value), 0);
});
});
<input type="text"/>
为什么会发生这种情况?
当您按key
第一次,分配给input is empty
当时的keypress
事件发生,然后该字符被添加到输入中,但过了一会儿。这同样适用于未来keypress
事件的价值input
您读到的是之前的上一篇input changes
。另外,如果您阅读MDN有关于按键被删除的警告。因此,相反,您可能想听keyup
事件如下一个示例所示:
const input = document.querySelector('input');
input.addEventListener('keyup', e =>
{
console.log(e.target.value);
});
.as-console {background-color:black !important; color:lime;}
<input type="text" id="input">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)