为什么keypress事件检测到的大写字母显示为小写?
我给输入框绑定了keypress事件,想记录用户输入的每个字符。但发现当按下Shift+字母键时(比如Shift+A),event.key返回的始终是小写字母”a”,而不是预期的大写”A”。这该怎么正确获取用户实际输入的字符?
尝试过用event.keyCode,但发现不同浏览器返回值差异大。也试过结合event.shiftKey判断,但感觉逻辑复杂容易出错。有没有更简洁的办法?
代码片段类似这样:
document.querySelector('input').addEventListener('keypress', function(e) {
console.log('输入字符:', e.key); // Shift+A时输出a
});
或者保持监听keydown,但用e.key就行:
直接这么写:
或者用keydown:
别再用keypress了,这玩意对大小写处理本来就有坑。