按键动作

时间:2011-11-28 11:04:27

标签: javascript jquery onkeypress

我正在设计一个基于网络的会计软件。我想打开"新的会计凭证"每当用户按 N 键时。并打开"设置"每当他/她按 S 键时。

我看到了一些基于JavaScript和jQuery的脚本。但他们并没有完全奏效。有人可以帮帮我吗?

我试过这个剧本:

var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
   //Do something
}

4 个答案:

答案 0 :(得分:6)

$(document).bind('keyup', function(e){
    if(e.which==78) {
      // "n"
    }
    if(e.which==83) {
      // "s"
    }
});

要防止输入被聚焦:

$("body").on("focus",":input", function(){ $(document).unbind('keyup'); });
$("body").on("blur",":input", function(){ $(document).bind('keyup', function(e){ etc.... });

您可能希望将bind函数放入其自己的函数中,这样就不会重复代码。 e.g:

function bindKeyup(){
    $(document).bind('keyup', function(e){
      if(e.which==78) {
        // "n"
      }
      if(e.which==83) {
        // "s"
      }
    });
}
$("body").on("focus",":input", function(){ $(document).unbind('keyup'); });
$("body").on("blur",":input", function(){ bindKeyup(); });

答案 1 :(得分:3)

您可以使用.keypress().keyup()方法在jQuery中检测按键,这是一个简单的示例:

$(document).keyup(function(event) { // the event variable contains the key pressed
 if(event.which == 78) { // N keycode
   //Do something
 }
});

以下是密码代码列表:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

更新1

.keyup和.keydown有不同的影响 - 根据@ThomasClayson的评论 - :keyup是最好的,因为如果按键被按下,按键将重复。它为每个插入的字符注册一个事件。它也没有注册修改键,例如shift(虽然这里没有必要,但可能需要注意)

更新2

这是来自jQuery keyup doc site:

  

要确定按下了哪个键,请检查该事件对象   传递给处理函数。虽然浏览器使用不同   存储此信息的属性,jQuery规范化.which   属性,因此您可以可靠地使用它来检索密钥代码。这个   代码对应键盘上的一个键,包括特殊代码   箭头等键。

有效地意味着which.event是确定使用了哪个密钥所需的全部内容。谢谢@nnnnnn

答案 2 :(得分:2)

您需要阅读事件对象的.keyCode()属性。您可以询问它以发现按下了哪个键并相应地采取行动。我还建议您为快捷键添加修饰键,例如 Shift Alt ,这样当有人无意中输入输入时,面板不会弹出起来。在下面的示例中,我使用了 Shift

$(document).keyup(function(e) {
    if (e.shiftKey) {
        switch(e.keyCode ? e.keyCode : e.which) {
            case 78: // N pressed
                myNPressedHandler();
                break;
            case 83: // S pressed
                mySPressedHandler();
                break;
        }
    }
} 

答案 3 :(得分:0)

$(document).bind('keypress', function(e) {
    var keycode= (e.keyCode ? e.keyCode : e.which);
       if(keyCode==78) {
      // "n"
    }else if(keyCode==83) {
      // "s"
    }

});