我正在设计一个基于网络的会计软件。我想打开"新的会计凭证"每当用户按 N 键时。并打开"设置"每当他/她按 S 键时。
我看到了一些基于JavaScript和jQuery的脚本。但他们并没有完全奏效。有人可以帮帮我吗?
我试过这个剧本:
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
//Do something
}
答案 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
.keyup和.keydown有不同的影响 - 根据@ThomasClayson的评论 - :keyup是最好的,因为如果按键被按下,按键将重复。它为每个插入的字符注册一个事件。它也没有注册修改键,例如shift(虽然这里没有必要,但可能需要注意)
这是来自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"
}
});