在处理关键[上一页|下一页|新闻]事件,我应该使用。其中或.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事件触发一次 ,但单独的按键事件被触发每个插入字符)。
jQuery的标准化event.which
(参见: api.jquery.com/event.which/ ),所以这是你所需要的。
请参考此线程有关您的问题。
在一般情况下,我经常主张。其中,因为它可以让你保持跟踪两个charCodes和键码。 event.which内置到jQuery的,以规范这些不同的方法。
你可以找到关于键码的详细信息在这里 。
请参阅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()是一个更好的选择。
根据此页 :
event.which
在IE <9未定义上keydown
和keyup
。
event.keyCode
上是在壁虎(Seamonkey的,火狐)0 keypress
用于返回一个字符键。
event.charCode
只支持KeyDown和KEYUP由Internet Explorer(MAC)。
试试它的jsfiddle
文章来源: JavaScript/jQuery: Keypress for keyboard navigation (event.which doesn't work)