我正在设计一个基于网络的会计软件。例如,当用户按下N键时,我希望打开“新会计文档”。当他/她按下S键时,打开“设置”。
我看过一些基于JavaScript和jQuery的脚本,但它们并没有完全起作用。请问有人可以帮助我吗?
我已经尝试了这个脚本:
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
//Do something
}
我正在设计一个基于网络的会计软件。例如,当用户按下N键时,我希望打开“新会计文档”。当他/她按下S键时,打开“设置”。
我看过一些基于JavaScript和jQuery的脚本,但它们并没有完全起作用。请问有人可以帮助我吗?
我已经尝试了这个脚本:
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
//Do something
}
$(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(); });
$(document).keyup(function(event) { // the event variable contains the key pressed
if(event.which == 78) { // N keycode
//Do something
}
});
keyup
是最好的选择,因为如果按键被按住,keypress
会重复触发。它为每个插入的字符注册一个事件。它也不会注册修饰键,比如 shift(虽然在这里不是必要的,但可能需要记住)。 - Thomas Claysonevent.which
存在 - jQuery为您规范化了它。 - nnnnnn您需要了解事件对象的.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;
}
}
}
$(document).bind('keypress', function(e) {
var keycode= (e.keyCode ? e.keyCode : e.which);
if(keyCode==78) {
// "n"
}else if(keyCode==83) {
// "s"
}
});