javascriptjquerydom-events

Trigger a keypress/keydown/keyup event in JS/jQuery?


What is the best way to simulate a user entering text in a text input box in JS and/or jQuery?

I don't want to actually put text in the input box, I just want to trigger all the event handlers that would normally get triggered by a user typing info into a input box. This means focus, keydown, keypress, keyup, and blur. I think.

So how would one accomplish this?


Solution

  • You can trigger any of the events with a direct call to them, like this:

    $(function() {
        $('item').keydown();
        $('item').keypress();
        $('item').keyup();
        $('item').blur();
    });
    

    Does that do what you're trying to do?

    You should probably also trigger .focus() and potentially .change()

    If you want to trigger the key-events with specific keys, you can do so like this:

    $(function() {
        var e = $.Event('keypress');
        e.which = 65; // Character 'A'
        $('item').trigger(e);
    });
    

    There is some interesting discussion of the keypress events here: jQuery Event Keypress: Which key was pressed?, specifically regarding cross-browser compatability with the .which property.