我已经下载了jquery.hotkeys-0.7.9.js插件,并试图提供热键。按ctr + t它应该打开新的URL地址。我做了这样的事情
jQuery(document).bind('keypress', 'Ctrl+t',function (evt){
alert('ctrl+t is pressed');
window.location.href = ("${createLink(controller:'trip',action:'create')}");
return false
});
但这不起作用,它取决于键盘上的任何键,(即使我按a,b,c等)。我应该做出什么改变,以便它只响应ctr + t? 即使我从js文件夹中删除了下载的插件,结果也是相同的\
我正在使用的jquery版本是 jquery-1.1.3.1.pack.js
答案 0 :(得分:3)
根据项目给出的例子,你应该这样做:
$.hotkeys.add('Ctrl+t', function(){
alert("haha");
});
但是在Chrome(也可能是其他一些浏览器)中,Ctrl + t是打开新标签的默认热键,我不知道如何覆盖它。因此,当我进行测试时,我将Ctrl+t
替换为Ctrl+v
,并且它有效
小提琴:http://jsfiddle.net/QFT8f/
更新:
这是从hotkey.js:
USAGE:
$.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');});
$.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});>
$.hotkeys.remove('Ctrl+c');
$.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'});
答案 1 :(得分:1)
您的代码基于documentation是正确的,但插件无法正常工作(至少在Firefox中)。我会抛弃插件并根据事件属性处理它。
Here是安装插件的小提琴,您可以在按下任何键时看到事件触发,以及如何在按下“Ctrl + t”时限制仅运行某些代码。注意:您必须单击输出面板,以便为要触发的关键事件重点关注。
JavaScript代码:
$(document).bind('keypress', 'Ctrl+t',function (e){
if(e.which==116 && e.ctrlKey){
alert('Ctrl+t was pressed');
return false;
} else {
alert('Any other key. Bad code...BAD!');
}
return true;//Pass the event on
});
<强>更新强>
我之前在测试时添加了插件,但是在我摆弄的时候,我似乎丢失了它,所以上面的例子在普通的JQuery中工作(我将第二个参数作为函数)。 Here是使用相同代码添加的 jquery.hotkeys-0.7.9.min.js 资源的小提琴,对我来说,它会抛出"elem.getAttribute is not a function"
JavaScript错误使用JQuery 1.6运行。放弃插件的另一个原因!