5

我正在设计一个基于网络的会计软件。例如,我想在用户N按键时打开“新会计凭证”。S并在他/她按下键时打开“设置” 。

我看到了一些基于 JavaScript 和 jQuery 的脚本。但他们并没有完全发挥作用。谁能帮帮我?

我试过这个脚本:

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

4 回答 4

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函数放入它自己的函数中,这样您就不会重复代码。例如:

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(); });
于 2011-11-28T11:12:08.100 回答
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 文档网站:

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

从情感上讲,这which.event就是您确定已使用哪个密钥所需的全部内容。谢谢@nnnnnn

于 2011-11-28T11:13:58.113 回答
2

您需要阅读.keyCode()事件对象的属性。您可以询问它以发现按下了哪个键并采取相应措施。我还建议您在快捷方式中添加修饰键,例如Shiftor 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;
        }
    }
} 
于 2011-11-28T11:10:59.943 回答
0
$(document).bind('keypress', function(e) {
    var keycode= (e.keyCode ? e.keyCode : e.which);
       if(keyCode==78) {
      // "n"
    }else if(keyCode==83) {
      // "s"
    }

});
于 2011-11-28T11:26:11.300 回答