javascript – jQuery事件Keypress:按下了哪个键? A-Z,&@

在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”将给出不同的keyCodes,“2”和“@”也是如此.所以keypress可能更适合您的需求.

(顺便说一句,这不是一个jQuery的东西,即使使用“普通”JavaScript也是正常的行为,尽管jQuery试图在不同的浏览器中规范行为.一个这样的规范化是jQuery确保event.which将工作一致,所以你应该使用event.which来获取代码而不是event.keyCode.)

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...