e.which:非数字比较

时间:2014-04-22 10:40:17

标签: jquery keyboard-shortcuts

我有一个遗留的jquery方法,就像这样开始:

$(function() {
    $(document).keypress(function(e) {
        if ($(document.activeElement).is('body')) {
            if (e.which==48) { // 0

我想清理代码,使其更具可读性。

如何检查用户是否按了“0”键?

是否有常数,或者您可以使用if (e.which==unkown_method('0')) { ...

提示:代码有效,但希望它没有幻数。

解决方案

在用户“Archer”的帮助下,我现在使用此解决方案:

        var key=String.fromCharCode(e.which);

        if (key=="0") {
            ...
        }
        else if (key=="5") {
            ...
        }

3 个答案:

答案 0 :(得分:3)

如果你问我认为你在问什么,那么这应该有帮助......

if (String.fromCharCode(e.which) == "0") { etc..

编辑由于jQuery标准化事件所以它始终使用which,因此下一位实际上并不相关,但我会留在此处供参考。


另外,请记住,不同的浏览器的事件类型略有不同,因此您可能需要包含此..

var key = String.fromCharCode(e.keyCode ? e.keyCode : e.which);
if (key == "0") { etc..

这是一个通用的代码,我已经永远躺在那里,说实话,我不记得哪些浏览器做了什么,但有些使用keyCode并且有些使用which。这涵盖了两种可能性。

答案 1 :(得分:0)

这个插件看起来很有希望:

https://github.com/jeresig/jquery.hotkeys

有任何帮助吗?

答案 2 :(得分:0)

$(function(){    
    $(document).keydown(function(e) {

  if ($(document.activeElement).is('body')) 
      {
         if (e.which==48) { 
           // do something..
         }
      }
     });
});

使用keydown事件而不是keypress事件。我希望它能正常运作。