我在互联网上找到了以下代码,当我看到这个解决方案时,我想知道所有浏览器的密钥代码是否相同.
var CalendarFilter = Backbone.View.extend({
// ...
events: {
'click .filter': 'filter',
'keypress input[type=text]': 'filterOnEnter'
},
filterOnEnter: function(e) {
if (e.keyCode != 13) return;
this.filter(e);
},
filter: function(e) { /* ... */ });
}
});
Run Code Online (Sandbox Code Playgroud)
只是一个疑问,谢谢.
首先,charCode不是keyCode!charCode跟随ascii集,while keyCode是键的特定索引.这里可以看到两者之间的不同值:较低ASCII字符集的键盘事件字符值 - O'Reilly Answers
charCode和之间的一个主要区别keyCode是charCode已被弃用,并且在引用时通常在某些浏览器[除了0]之外没有值
有趣的是,onkeypress似乎返回字符代码而不是keyCode,而onkeyup和onkeydown按预期工作,因此在检测keyCode值时可能会出现一些问题.你可以在这里测试这个JavaScript - 检测击键
- 附加参考:keyCode和charCode.
keyCode,charCode并且which是不推荐W3C,然而,仍然是传统的支持keyCode模式.固定的跨浏览器/平台支持是通过固定的虚拟键码来完成的,这些键盘独立于键盘布局 - 因此是"虚拟的".
其他虚拟密钥代码 - 在固定虚拟密钥代码之外 - 似乎也在供应商之间一致地实现:KeyboardEvent - 文档对象模型(DOM)| MDN 虚拟密钥代码(Windows)
jQuery使用它自己的keyCode/ charCode事件对象属性:.which,它试图统一keyCode和charCode.并且赞成keyCode值 - event.which - jQuery API
简而言之,您的具体keyCode:"13"应该适用于大多数支持javascript的浏览器,因为它是一个固定的虚拟键码,并且与所有浏览器和平台一致
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |