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 が思い浮かびます) では、コントロール キーがまったくありません。1 文字入力するだけで特別な機能を呼び出すことができます (github では "t" でファイル名を入力できるページが開き、リポジトリ内のファイルがフィルター処理されます)。そして、ほとんどの場合、それで問題ありません。通常、 html に何かを入力できる必要はありませんbody。機能を起動する前に、それらが入力またはテキストエリア内にないことを確認したいだけです。

于 2013-08-29T23:16:37.167 に答える