Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trigger Keypress with jQuery

On the Definitive Trigger Keypress jQuery thread there is no working JSFiddle for the answer, and the code that is there doesn't work for me.

$("button").click(function () {
    $("input").focus();
    var e = jQuery.Event("keydown");
    e.which = 77; // # Some key code value
    $("input").trigger(e);
})

There's my code and here's my fiddle http://jsfiddle.net/Z8adb/

On click, an M should appear in the input, as the input is given focus and having a keydown with the keyCode of 77 ("m") triggered on it.

Any ideas?

EDIT: My true purpose for this is to trigger an "m" hotkey on a Sublime Video in order to mute the video programmatically. This was my first step to ensure I was firing the "m" key properly, which I am with the help of Stack Overflow. However, I'm still not able to get an event to fire programmatically on the video. I think this is just a problem with Sublime Video, but I'm not sure, and anyone's views on forcing keypresses and clicks would be awesome to hear.

like image 834
Tommy Nicholas Avatar asked Apr 20 '13 16:04

Tommy Nicholas


People also ask

What is keypress event in jQuery?

The keypress() method triggers the keypress event, or attaches a function to run when a keypress event occurs. The keypress event is similar to the keydown event. The event occurs when a button is pressed down. However, the keypress event is not fired for all keys (e.g. ALT, CTRL, SHIFT, ESC).

What is Keyup and Keydown in jQuery?

keydown - The key is on its way down. keypress - The key is pressed down. keyup - The key is released.

Is keypress deprecated?

Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes.


2 Answers

Using trigger you are just triggering the event with a keycode but not assigning the value to the textbox. Try this :- http://jsfiddle.net/PbHD2/

String.fromCharCode

$("button").click(function() {
     $("input").focus();
    var e = jQuery.Event("keydown");
    e.which = 77; // # Some key code value
    $("input").val(String.fromCharCode(e.which));
    $("input").trigger(e);
});
$('input').keydown(function(e){
   console.log('Yes keydown triggered. ' + e.which)
});
like image 88
PSL Avatar answered Nov 15 '22 04:11

PSL


SublimeVideo is a HTML5 player, correct. If so, you can mute it by using a property, right?

$("video#yourVideoTagId").prop("muted", true);
like image 39
Moby's Stunt Double Avatar answered Nov 15 '22 06:11

Moby's Stunt Double