Jquery-Hot键响应每个键

时间:2011-06-24 13:42:35

标签: javascript jquery jquery-plugins

我已经下载了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

2 个答案:

答案 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运行。放弃插件的另一个原因!