JavaScript/jQuery:用于键盘导航的Keypress(无法正常运行的事件) [英] JavaScript/jQuery: Keypress for keyboard navigation (event.which doesn't work)

查看:210
本文介绍了JavaScript/jQuery:用于键盘导航的Keypress(无法正常运行的事件)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在处理key [Up | Down | Press]事件时,应该使用.which还是.keyCode?我可以使用一些示例代码来处理 jQuery中的三个键盘事件吗?没有jQuery,您能做到吗?我希望它在每种浏览器中都能可靠地工作.

When handling key[Up|Down|Press] events, should I use .which or .keyCode? Can I have some example code for handling the three keyboard events in jQuery? Can you do it without jQuery? I want it to work reliably in every browser.

更新

奇怪的是,jQuery的event.normalization不适用于我的handleKey Press (event)处理程序:

Strangely, jQuery's event.which normalization wasn't working for my handleKeyPress(event) handler:

// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
    event.which = event.charCode || event.keyCode;
}

在handleKey Press 中进行规范化之前和之后,我得到了这个(这不是将event.which设置为event.keyCode中的值):

I'm getting this before and after this normalization inside handleKeyPress (it's not setting event.which to the value in event.keyCode):

  • event.which = 0
  • event.charCode = 0
  • event.keyCode = 40

但是,如果我改用handleKey Down ,则代码可以正常工作.我认为这与按键与按键有关.该代码适用于我的handleKey Down (事件)处理程序.

However, the code works if I use handleKeyDown instead. I think it has to do with keypress vs. keydown; the code works for my handleKeyDown(event) handler.

不幸的是,我需要使用 keypress (而不是keydown),因为我想使用箭头键进行导航:如果用​​户按住箭头键,则 事件会被一次触发,但每个插入的字符都会触发单独的 keypress 事件.)

Unfortunately, I need to use keypress (not keydown), since I want to use the arrow-keys for navigation: if the user presses and holds an arrow key, a keydown event is triggered once, but separate keypress events are triggered for each inserted character).

推荐答案

根据此页面 :

event.which.

event.keyCode为0.

event.charCode仅在Internet Explorer(Mac)的向下键和向上键上受支持.

event.charCode is only supported on keydown and keyup by Internet Explorer (Mac).

在JSFiddle上尝试

这篇关于JavaScript/jQuery:用于键盘导航的Keypress(无法正常运行的事件)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆