0

JQuery hotkeysの最新バージョンを使用しています。

プラグインは素晴らしく、基本的に、私が必要とすることを正確に実行します。

ただし、「A + H」などのキーの組み合わせにバインドしたいと思います。たとえば、次のようになります。

jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); }

これはうまくいかないようです - 誰かがこれを成功させましたか? CTRL+A などは動作しますが、英数字の組み合わせにバインドできれば理想的です。

4

3 に答える 3

3

コードベースを調べたところ、プラグインがプログラムされているように見えます。説明しているユースケースをサポートしていません。修飾キー ( shiftaltなど) を特殊なケースとしてひとまとめにし、mod キーを含む組み合わせを作成できるようにします。ただし、複数の標準キーはサポートされていません。

今後のリリースでこの機能を追加するようプラグイン開発者に依頼することをお勧めします。それまでの間、このプラグインに合わせて目標を調整するか、自分でプラグインを変更してみるか、この特別なケース用のカスタム コードを記述することができます。

ちなみに、コードは特に複雑ではないので、ぜひ見てみてください。多分あなたは私が見ていない何かを見るでしょう。
プラグイン ファイル.

于 2011-02-18T17:27:55.733 に答える
2

いずれかのキーを押すと 1 つのイベントしか発生しないため、これで両方のキーを検出することはできないと思います。Shift、alt、ctrl、およびその他のメタ キーは特殊なケースです。

1 つの解決策は、最後に押されたキーを保存してから、次のキーを待つことです。以下のコードのデモを作成しました。

var timer, last;
$(document).bind('keydown', function(e) {
    // Typing a then h will call the alert
    if (last == 65 && e.which === 72) {
        alert('Hello World');
    }
    last = e.which;
    // clear last value after 100 ms
    clearTimeout(timer);
    timer = setTimeout(function(){
        last = '';
    }, 100);
}); 

最後のキーは 100 ミリ秒後にクリアされることに注意してください。これがなければ、「a」を押してから 10 秒ほど待ってから「h」を押してアラートを受け取ることができるからです。ここで、組み合わせをほぼ同時に押す必要があります (ただし、「a」は「h」の前にある必要があります)。わずかな変更により、ユーザーは最初に「h」を押してから「a」を押すこともできます。

于 2011-02-18T19:07:40.740 に答える
0

それはまさにあなたが要求したものではありませんが、これは a + h の代わりに a then h で機能します(キーボードで行うのは厄介です)

$(document).bind('keyup', 'a', function(){
    $(document).bind('keyup', 'h', function(){
        // do you shizzle
    });
});
于 2014-11-06T14:34:05.723 に答える