在 keydown 上我从 jQuery 得到以下信息:
jQuery.Event
altKey: false
attrChange: undefined
attrName: undefined
bubbles: true
button: undefined
cancelable: true
charCode: 0
clientX: undefined
clientY: undefined
ctrlKey: false
currentTarget: HTMLDivElement
data: undefined
detail: 0
eventPhase: 2
fromElement: undefined
handleObj: Object
handler: function () {
isDefaultPrevented: function returnFalse() {
jQuery16106168975948821753: true
keyCode: 51
layerX: 0
layerY: 0
metaKey: true
newValue: undefined
offsetX: undefined
offsetY: undefined
originalEvent: KeyboardEvent
pageX: 0
pageY: 0
prevValue: undefined
relatedNode: undefined
relatedTarget: undefined
screenX: undefined
screenY: undefined
shiftKey: false
srcElement: HTMLDivElement
target: HTMLDivElement
timeStamp: 1320206454048
toElement: undefined
type: "keydown"
view: DOMWindow
wheelDelta: undefined
which: 51
__proto__: Object
我怎样才能知道按下了什么键?我试过:
String.fromCharCode(e.keyCode)
这适用于 A-Z,但如果我按 @,我不会得到 @,我会得到 2?
Ideas?
您可以捕获三种键盘事件:keyup
, keydown
, and keypress
。前两者的行为方式与您观察到的方式相同,而后者的行为方式与您似乎想要的方式相同。
您需要了解键和与该键关联的字符之间的区别。
正如中所解释的jQuery文档(诚然,它有点被埋没了),keyup
and keydown
events 给出与键盘上实际物理键相对应的 keyCode,因此大写“A”和小写“a”将具有相同的代码,“2”和“@”也将具有相同的代码 - 但请注意上面的“2”键“W”与数字键盘上的“2”键具有不同的代码。这event.shiftKey
属性会告诉您按下该键时 Shift 是否按下。这两个事件还可以检查非文本类型键,例如箭头键、Ctrl、Home 等。
另一方面,keypressevent 给出了与字符相对应的 keyCode,因此“A”和“a”将给出不同的 keyCode,“2”和“@”也会给出不同的 keyCode。So keypress可能更适合您的需求。
(顺便说一句,这不是 jQuery 的事情,即使使用“普通”JavaScript,这也是正常行为,尽管 jQuery 尝试规范化不同浏览器之间的行为。其中一个规范化是 jQuery 确保event.which
会持续工作,所以你应该使用event.which
获取代码而不是event.keyCode
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)