Fogbugz有一个非常好的键盘快捷键实现。
您点击 CTRL + ; ,您点击的下一个键将对应当前页面上的用户界面元素。
这样可以避免与现有的浏览器键盘快捷键冲突(就像您只是尝试添加 CTRL + A , CTRL 一样) + B ..样式快捷方式)。
更好的是,在你点击 CTRL + ; 后,“每个动作都会显示小黄色标签及其快捷方式。”因此,您始终可以使用即时键盘快捷键参考。
详细信息: http://fogbugz.stackexchange.com/questions/4310
有没有人看过我们可以使用的基于jQuery的(或其他)实现?
答案 0 :(得分:1)
您可以采取一些措施来实现这一目标。为了澄清,您希望能够使用键盘组合 Ctrl + ; 来允许下一个keydown触发一段代码?如果你正在寻找这个,你可以这样做:(在jQuery中)
// For getting the function corresponding to the key
function getPosition(arrayName,arrayItem)
{
for(var i=0;i<arrayName.length;i++){
if(arrayName[i]==arrayItem)
return i;
}
}
// Written By Ben Bales
var ctrlDown = false; // Tells if the cotrol button is currently down
var semicolonDown = false; // Tells if the semicolon button is down
var allowShortcut = false; // Allows the key following ctrl+; to run a function
var keyTimeout = 800; // Allows the following keystroke within this amount of milliseconds after ctrl+;
// reset allowShortcut
function disableShortcut()
{
allowShortcut = false;
console.log("dead");
}
$(document).keydown(function(e){
if(e.keyCode == 17) ctrlDown = true;
if(e.keyCode == 186 || e.keyCode == 59) semicolonDown = true;
//console.log("Semicolon: "+semicolonDown);
//console.log("Ctrl: "+ctrlDown);
// If both keys are down, allow a following key to do something
if(allowShortcut == true)
{
var key = e.keyCode;
//alert(key);
var actionPos = getPosition(keyArray,key);
actionArray[actionPos]();
allowShortcut = false;
}
if(ctrlDown == true && semicolonDown == true)
{
allowShortcut = true;
// after a certian amount of time dont allow the following key to do something
setTimeout(disableShortcut,keyTimeout);
}
});
$(document).keyup(function(e){
if(e.keyCode == 17) ctrlDown = false;
if(e.keyCode == 186 || e.keyCode == 59) semicolonDown = false;
});
// You may want to put your shortcuts in arrays with corresponding keyCodes like so:
var actionArray = new Array(doSomething,doSomethingelse);
var keyArray = new Array(65,66);
// sample actions
function doSomething()
{
alert("did something");
}
function doSomethingelse()
{
alert("did something else");
}
我刚刚做了这个并没有测试过,但希望你能理解它想要做什么。但话说再说它只是一个15岁的解决方案。如果您在html模板中进行设置并试用,请尝试 Ctrl + ; ,然后点击 A 或 B < / kbd>键运行相应的函数。
如果您需要更多帮助,请与我们联系!
答案 1 :(得分:0)
JQ Hotkeys插件可能是一个很好的匹配......