为什么keypress事件无法捕获输入的字符?
在给输入框做实时验证时发现,用keypress事件监听输入,event.charCode返回的值总不正确,比如输入字母a会得到97,但转成字符串却变成undefined…
尝试过这样写:
input.addEventListener('keypress', function(event) {
const char = String.fromCharCode(event.charCode);
console.log(char); // 输入"a"时控制台显示""
});
换成keydown事件反而能正确获取keyCode,但不确定这样改是否符合规范?其他同学写的类似功能却能正常显示字符,是不是和浏览器版本有关?
input.addEventListener('input', function(event) {
const value = event.target.value;
console.log(value.slice(-1)); // 获取最后输入的字符
});
如果非要用键盘事件,推荐keydown配合event.key,简单粗暴:
input.addEventListener('keydown', function(event) {
console.log(event.key); // 直接输出按下的字符
});
检查一下你的浏览器版本,老古董该升级了。