我正在尝试在我的JavaScript应用中使用此 jQuery键盘快捷键插件 https://github.com/jeresig/jquery.hotkeys。
我遇到一个问题,即使用事件监听器开始监听我的按键操作的绑定方法有效,但unBind
方法似乎不起作用。
以下是一个示例:http://jsfiddle.net/80k2uf3w/13/
// Enable our keyboard shortcut for the "number 1 key"
function bindOneKey(){
alert("keyboard Event listener is now listening for key number 1 to be pressed!");
jQuery(document).bind('keydown', '1',function (evt){
alert("keyboard key number 1 was pressed");
return false;
});
}
// Disable our keyboard shortcut for the "number 1 key"
function unBindOneKey(){
jQuery(document).unbind('keydown', '1');
alert("keyboard Event listener for key number 1 has been killed!");
}
// Demo buttons to enable/disable our Keyboard shortcut Event listeners
$(document).ready(function(){
$('#bindOne').bind('click', bindOneKey);
$('#unBindOne').bind('click', unBindOneKey);
}
演示的HTML按钮
<input type="button" id="bindOne" value="Bind 1 keyboard key" />
<input type="button" id="unBindOne" value="unBind 1 keyboard key" />
按下bind 1
按钮后,在该演示页面上,您可以按键盘上的数字1键,并从回调功能中获取警报。
之后,如果您按下unbind 1
按钮然后再次按1 key
,它仍然有效,而不是取消绑定!
有谁知道问题是什么?
这只是展示功能和问题的最基本的演示。我的真实应用程序基本上会在打开模态时启用键盘快捷键,然后在模态关闭时禁用/取消绑定它们。这就是为什么我需要让这个工作。
我的另一个选择是找到一个新的键盘快捷键库,它看起来大约有50个,但我喜欢这个,因为它看起来很轻巧,也是由一个非常了解的JavaScript开发人员构建的。所以我在这里发帖,看看我们是否可以先让这个100%工作。
有一点需要注意的是,在库的GItHub页面上,似乎测试文件使用的是jQuery v1.4.x
旧版本,也许这可能是问题的一部分,但我不确定该库的大多数工作,我也没有控制台错误!
感谢您的帮助
答案 0 :(得分:1)
我发现了一个类似的问题,其他人试图做同样的事情启用和禁用键盘快捷键,因为Modal在此问题中使用此库打开和关闭jQuery Hotkeys - unbinding?
似乎没有任何完美的解决方案,所以我可能会查看其他库,或者只是手动编写我需要的快捷键,而不需要库。它可能会给我更多的控制权。