在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?
有想法吗?
最佳答案
您可以捕获三个键盘事件:keyup
,keydown
和keypress
。前两个以您观察到的方式运行,后一个以您似乎想要的方式运行。
您需要了解键和与该键关联的字符之间的区别。
如jQuery doco中所述(当然,它是埋入的),keyup
和keydown
事件给出的keyCode对应于键盘上的实际物理键,因此大写字母“A”和小写字母“a”将具有相同的代码,如下所示:将显示“2”和“@”-但请注意,“W”上方的“2”键与数字小键盘上的“2”键具有不同的代码。 event.shiftKey
属性将告诉您在按下键时是否向下移动了档位。这两个事件还可以检查非文本类型的键,例如箭头键,Ctrl,Home等。
另一方面, keypress
事件给出了与字符相对应的keyCode,因此“A”和“a”将给出不同的keyCode,“2”和“@”也将给出不同的keyCode。 因此 keypress
可能更适合您的需求。
(顺便说一句,这并不是jQuery的事情,即使使用“普通” JavaScript,这也是正常的行为,尽管jQuery试图在不同浏览器之间对行为进行规范化。一种标准化是jQuery确保event.which
能够始终如一地工作,因此您应该使用event.which
而不是event.keyCode
来获取代码。)
关于javascript - jQuery事件按键: Which key was pressed? A-Z和&@,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7975703/