-->

的JavaScript / jQuery的:按键时键盘导航(event.which不工作)(Java

2019-10-28 14:15发布

在处理关键[上一页|下一页|新闻]事件,我应该使用。其中或.keyCode? 我能处理的一些示例代码jQuery的三种键盘事件 ? 你可以不用jQuery的? 我希望它在每个浏览器可靠地工作。

更新

奇怪的是,jQuery的event.which正常化工作不适合我的handleKey (事件)处理:

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

之前,这里面正常化 handleKey(它不设置event.which在event.keyCode值)后,我得到这个:

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

然而,代码工作,如果我用handleKey 来代替。 我认为这与按键对比的keydown做; 代码工作为我的handleKey (事件)处理。

不幸的是,我需要使用按键 (不KEYDOWN),因为我想使用箭头键导航:如果用户按下并按住方向键,一keydown事件触发一次 ,但单独的按键事件被触发每个插入字符)。

Answer 1:

jQuery的标准化event.which (参见: api.jquery.com/event.which/ ),所以这是你所需要的。



Answer 2:

请参考此线程有关您的问题。

在一般情况下,我经常主张。其中,因为它可以让你保持跟踪两个charCodes和键码。 event.which内置到jQuery的,以规范这些不同的方法。

你可以找到关于键码的详细信息在这里 。



Answer 3:

请参阅jQuery的API文档为按键时(),它可以绑定。 http://api.jquery.com/keypress/

此外,这里是一个很好的演练对于使用jQuery做一个按键导航: http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-keypress-navigation-using-jquery/

编辑:从API重要/更多相关线路:

如果按键的任何地方需要捕获(例如,以实现在页面上全球快捷键),它是有用的这种行为附加到文档对象。 由于事件冒泡,所有的按键都会使他们的方式了DOM文档对象,除非明确停止。

为了确定被输入的字符,我们可以检查传递给处理函数的事件对象。 虽然浏览器使用不同的属性来存储这些信息,jQuery的规范了。其中属性,这样就可以可靠地使用它来检索的字符代码。

请注意,KeyDown和KEYUP提供指示按下其中的按键的代码,而按键指示被输入的字符。 例如,小写字母“a”将被报告为65由KeyDown和KEYUP,但作为由97按键。 一个大写字母“A”报告为65的所有事件。 因为这种区别,捕捉特殊的按键,如箭头键时,.keydown()或.keyup()是一个更好的选择。



Answer 4:

根据此页 :

event.which在IE <9未定义上keydownkeyup

event.keyCode上是在壁虎(Seamonkey的,火狐)0 keypress用于返回一个字符键。

event.charCode只支持KeyDown和KEYUP由Internet Explorer(MAC)。

试试它的jsfiddle



文章来源: JavaScript/jQuery: Keypress for keyboard navigation (event.which doesn't work)