7

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.

Community
  • 1
  • 1
Tommy Nicholas
  • 1,133
  • 5
  • 20
  • 31

2 Answers2

12

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)
});
PSL
  • 123,204
  • 21
  • 253
  • 243
  • I appreciate that, but the problem is the $('input').trigger(e) doesn't even need to be there in that instance. That is a good answer though. g – Tommy Nicholas Apr 20 '13 at 16:29
  • Let me ask you this: do you think the $("input').keydown(function(e)) is firing correctly? – Tommy Nicholas Apr 20 '13 at 16:30
  • 1
    Couldn't see any issues with the keydown.... Do you see anything with the keydown not firing? – PSL Apr 20 '13 at 16:36
  • This question was really in reference to trying to trigger a hot key with "m" on a video held in a tag from Sublime Video. They don't have a "volume" API method, so I was trying to automatically trigger the "m" key to mute the video before it plays. I think I was triggering the "m" correctly it just doesn't work on the video. – Tommy Nicholas Apr 20 '13 at 16:59
  • This is the kind of context that is needed in your question. You should add the true purpose to it. – Moby's Stunt Double Apr 20 '13 at 17:07
  • Agreed. I've solved it for my practical purposes, but for my larger purposes I'm still interested in hearing peoples ideas about forcing click events. – Tommy Nicholas Apr 20 '13 at 17:33
1

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

$("video#yourVideoTagId").prop("muted", true);
Moby's Stunt Double
  • 2,540
  • 1
  • 16
  • 32
  • Yep I already have that, but what I WANTED to do was actually have it handled through Sublime, because their mute function actually just moves the volume (and the GUI associated with volume) to 0, so it would take a lot of the UX stuff I'd have to do out of it to just trigger the function. – Tommy Nicholas Apr 27 '13 at 18:10