2

I have a checkbox in my jQuery application that you can check to duplicate a <div>. I'd like now to create a Ctrl+D shortcut for the operation. I can sense Ctrl+D with:

$(document).on('keydown',function(e) {  
    debugger;
    if((e.keyCode == 68) && e.ctrlKey){
        $('.duplicate').trigger('click');
    }
});  

But it looks like Firefox is capturing the Ctrl+D first and putting up a dialog to "Edit a bookmark."

How can I get the interrupt first, and then I'll kill it when I'm done? I don't want my users to have to dismiss a Firefox dialog every time they enter Ctrl+D.

4

2 回答 2

3

尝试使用e.preventDefault();

$(document).on('keydown',function(e) {  
    //debugger;
    if((e.keyCode == 68) && e.ctrlKey){
        $('.duplicate').trigger('click');
        e.preventDefault();
    }
});  

在此处查看演示页面(在此处编辑演示)。

附带说明一下,覆盖广为人知的键/命令并不是一个好的可用性实践。虽然您可以做到这一点,但最好使用其他组合键。

于 2013-08-29T23:15:29.073 回答
1

你试过e.preventDefault();吗?

或者更好的选择——选择不同的组合。当您开始弄乱他们的键绑定时,用户通常不喜欢它。在许多网站(想到 trello 和 github)上,根本没有控制键。您只需键入一个字符即可调用特殊功能(在 github 上“t”会打开一个页面,您可以在其中键入文件名,它将过滤存储库中的文件)。在大多数情况下,这应该没问题。您通常不需要能够在 html 上键入内容body。在触发功能之前,您只想确保它们不在输入或文本区域内。

于 2013-08-29T23:16:37.167 回答