13

jQueryを使用して複数のキープレスをシミュレートする方法を探しています。たとえば、ALT+F1 (Alt を押しながら F1 を押す)。

次のおかげで、F1キープレスをシミュレートすることができました: jQueryでキープレスイベントをトリガーする決定的な方法

このようなものを探しています:

$(".f1").click(function() {   
    var e = jQuery.Event("keydown");
    e.keyCode = 18; // ALT key pressed
    // while ALT key is pressed, hit the F1 Key
    $("input").trigger(e, function(){
        var e = jQuery.Event("keydown");
        e.which = 112; // F1 key
        $("input").trigger(e);
        });
});
4

2 に答える 2

22

修飾キーaltctrl、およびを使用するとshift、それらに特化したイベント修飾子を使用できます。

$(".f1").click(function() {
    var e = jQuery.Event("keydown");
    e.which = 112;       // # F1 code value
    e.altKey = true;     // Alt key pressed
    $("input").trigger(e);
});

デモ: http://jsfiddle.net/jtbowden/2kcrg/

于 2012-04-09T23:40:42.220 に答える
2
  1. キープレスイベントを完全にシミュレートすることはできません。それらにバインドされたjavascriptハンドラーのみをトリガーできます。したがって、キープレスで実行したいことをカプセル化する関数を単純に記述し、キープレスハンドラーにその関数を呼び出してもらい、同じ関数を呼び出すだけで他の場所でキープレスを「シミュレート」することを検討してください。
  2. 本当に ALT-F1 などをシミュレートする必要がある場合は、keypressイベントに他のプロパティを設定する必要があります (例:altKeyまたはmetaKey)、および/または最初に修飾キーを押したときにイベントをトリガーkeydownします (JQuery/firefox では、押すと次ALTkeydownイベントが表示されます)。 e.which == 18.)。結局のところ、ハンドラーが応答するのと同じイベントを作成するだけです。
于 2012-04-09T23:42:29.593 に答える