这真的很奇怪。
我有一个textarea。 我听了keyup和keypress事件。
当我按下“(”时,用e.keyCode触发按键= = e.which == 40
当我按下向下箭头键时,使用e.keyCode == e.which == 40
触发键盘为什么这么奇怪?
答案 0 :(得分:3)
传统上,箭头键重叠ASCII码,但是作为一个双字节序列表示给程序员,因此您知道已经按下了一个特殊键。随着Unicode的出现,这不再是一个干净的解决方案。
浏览器已经实现了表示Javascript运行时的特殊键输入的不同方式。详情为explained here。
我通常在检测箭头键时使用'keydown'事件,因为此事件附加了正确的键码,并且当用户键入左括号时将使用不同的键码(9中的键码)触发。如果您希望允许用户通过按住箭头键重复键控事件,这可能不起作用。
答案 1 :(得分:1)
keydown
和keyup
个事件会提供一个代码,指示按下了哪个键,而keypress
表示输入了哪个字符。
“(”是40(keypress
事件)的字符代码和向下箭头的键代码也是40(keyup
)。
尝试:
String.fromCharCode(40); // "("