我正在设计一个基于网络的会计软件。例如,我想在用户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(); });
您可以使用.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 文档网站:
要确定按下了哪个键,请检查传递给处理函数的事件对象。虽然浏览器使用不同的属性来存储这些信息,但 jQuery 对 .which 属性进行了规范化,因此您可以可靠地使用它来检索关键代码。此代码对应于键盘上的一个键,包括箭头等特殊键的代码。
从情感上讲,这which.event
就是您确定已使用哪个密钥所需的全部内容。谢谢@nnnnnn
您需要阅读.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;
}
}
}
$(document).bind('keypress', function(e) {
var keycode= (e.keyCode ? e.keyCode : e.which);
if(keyCode==78) {
// "n"
}else if(keyCode==83) {
// "s"
}
});