在Javascript事件中捕获特殊键和键案例

时间:2013-05-06 19:03:39

标签: javascript jquery keycode

我一直在使用Javascript密钥事件( keyup keydown keypress )进行一些工作,并得出结论,每个事件都有尝试确定用户按下了哪些键时,它们的优点和缺点。

通过使用jQuery提供的event.which,似乎 onkeypress 将提供区分大小写的字符代码。即A-Z为65-90,a-z为97-122。但是,方向等特殊键不会触发onkeypress。但它们会触发 keyup / * keydown *,但这些不会提供区分大小写的代码。

是否存在“两全其美”的解决方案,它既可以提供区分大小写检测,也可以提供特殊的密钥检测,不需要手动同时监控多个事件?

2 个答案:

答案 0 :(得分:1)

在收听键盘事件时

$(document).on('keyup', on_key_up);

function on_key_up(event)
{
    console.log('keycode:',event);      
}

我记录下来了:

altKey: false
bubbles: true
cancelable: true
char: undefined
charCode: 0
ctrlKey: false
currentTarget: document
data: undefined
delegateTarget: document
eventPhase: 3
handleObj: Object
isDefaultPrevented: function ot(){return!1}
jQuery19106670567644760013: true
key: undefined
keyCode: 69
metaKey: false
originalEvent: KeyboardEvent
relatedTarget: undefined
shiftKey: false
target: body
timeStamp: 1367933052234
type: "keyup"
view: Window
which: 69

你想要keyCode(在这种情况下是69),shifKey,altKey,ctrlKey。 例如:如果你按Shift +向右键,你将获得keyCode:3,shiftKey:true。

function on_key_up(event)
{
if(event.shiftKey) // action

}

希望这有帮助。

答案 1 :(得分:0)

您可以尝试THREEx.KeyboardState.js。虽然这个lib用于JS游戏,但在你的情况下它可能很有用。