Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件按键:按下了哪个键?A-Z和@_Javascript_Jquery - Fatal编程技术网

Javascript jQuery事件按键:按下了哪个键?A-Z和@

Javascript jQuery事件按键:按下了哪个键?A-Z和@,javascript,jquery,Javascript,Jquery,在按下键时,我从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

在按下键时,我从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


想法?

不确定按键时是否要运行事件,但可以尝试


否则,您可以检查代码中的事件中是否按下了shift键。我还没有见过一个能为您处理此问题的库

这是符合您确切要求的小提琴

你可能不得不使用

  String.fromCharCode(key_event.which);


然而,如果你想在按键上运行任何事件,这里有一个很好的插件,可以让它变得非常容易。请检查一下这把小提琴

您可以捕获三个键盘事件:
keyup
keydown
、和
keypress
。前两种行为方式与您观察到的方式相同,后一种行为方式与您似乎想要的方式相同

您需要了解键和与该键关联的字符之间的区别

正如在中所解释的(承认它有点隐蔽),
keyup
keydown
事件给出了一个keyCode,该keyCode对应于键盘上的实际物理键,因此大写字母“a”和小写字母“a”将具有相同的代码,“2”和“@”-但请注意,“W”上方的“2”键具有与“2”不同的代码按数字键盘上的键。
event.shiftKey
属性将告诉您按下该键时shift是否已按下。这两个事件还可以检查非文本类型的键,如箭头键、Ctrl键、Home键等

另一方面,事件给出了与字符对应的键码,因此“a”和“a”将给出不同的键码,“2”和“@”因此可能更适合您的需要。


(顺便说一句,这不是jQuery本身,这是正常的行为,即使使用“plain”JavaScript,尽管jQuery试图规范不同浏览器的行为。其中一种规范化是jQuery确保
event.which
将一致工作,因此您应该使用
event.which
来获取代码,而不是
event.keyCode

合理的背景,但是
keyCode
keypress
事件中肯定是错误的属性。我知道你接着说,
哪个
是正确的属性,但我认为最好明确指出,
keyCode
通常不应与
keypress
一起使用。其次,如果您想要与键入的字符对应的字符代码,
keypress
不仅比
keydown
keyup
更适合,而且是唯一可行的方法;我总是使用
。它
  String.fromCharCode(event.keyCode); // For IE