【发布时间】:2011-04-03 21:08:36
【问题描述】:
在处理 key[Up|Down|Press] 事件时,我应该使用 .which 还是 .keyCode?我可以提供一些处理three keyboard events in jQuery 的示例代码吗?没有jQuery你能做到吗?我希望它在每个浏览器中都能可靠地工作。
更新
奇怪的是,jQuery 的 event.which 规范化不适用于我的 handleKeyPress(event) 处理程序:
// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
event.which = event.charCode || event.keyCode;
}
我在 handleKeyPress 中的规范化之前和之后得到这个(它没有将 event.which 设置为 event.keyCode 中的值):
- event.which = 0
- event.charCode = 0
- event.keyCode = 40
但是,如果我改用 handleKeyDown,则代码可以工作。我认为这与 keypress 与 keydown 有关;该代码适用于我的 handleKeyDown(event) 处理程序。
不幸的是,我需要使用 keypress(不是 keydown),因为我想使用箭头键进行导航:如果用户按住箭头键,keydown 事件被触发一次,但每个插入的字符都会触发单独的keypress 事件。
【问题讨论】:
标签: javascript jquery keypress keydown onkeyup