13

Looking for a way to simulate a multiple keypress using jQuery. For example ALT+F1 (holding down alt and hitting F1).

I've managed to simulate the F1 keypress thanks to: Definitive way to trigger keypress events with jQuery

Looking for something like this:

$(".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);
        });
});
1

2 Answers 2

22

With the modifier keys alt, ctrl, and shift, you can use event modifiers specifically for them:

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

Demo: http://jsfiddle.net/jtbowden/2kcrg/

Sign up to request clarification or add additional context in comments.

1 Comment

fast and trikly
2
  1. you can't outright simulate keypress events, you can only trigger javascript handlers bound to them. So consider simply writing a function that encapsulates what you want your keypress to do, having the keypress handler call that function, and "simulate" the keypress in other places by simply calling that same function.
  2. if you really must simulate ALT-F1 and similar, you need to set other properties in the keypress event (e.g. altKey or metaKey), and/or first trigger keydown event for the press of the modifier key (in JQuery/firefox, pressing ALT gives me a keydown event with e.which == 18.). At the end of the day you just need to create the same events that your handlers respond to.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.