What I want is to simulate typing in <input>
field using javascript.
I have the following code:
var press = jQuery.Event("keydown"); press.ctrlKey = false; press.which = 65; $("#test").trigger(press);
But when I load the page, the #test
input field has no typed characters, the keycode of '65' represents 'A', but there is no 'A' input.
Basically what I want is to automatically typing in the website using Greasemonkey.
Please give me some ideas or some library with which I can use to do this.
Thanks a lot!
You can send key events, and anything listening for them will get them, but they will not change the input, so you will not see the letter A
appear, for example. This is mostly a security thing; see "Manually firing events" for a discussion about that.
So, if you want the letter to appear, you must alter the input's value as you send the key event. There is a jQuery plugin for that, see "The $.fn.sendkeys
Plugin".
You can see how an <input>
reacts with user-applied keys, key events, and that plugin at this jsFiddle.
For reference, this is the key piece of code from that jsFiddle:
$("button").click ( function (zEvent) { if (zEvent.target.id == "simA_plain") { console.log ("Send Plain key event"); var keyVal = 65; $("#eventTarg").trigger ( { type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal } ); } else { console.log ("Use the Plugin to simulate a keystroke"); $("#eventTarg").sendkeys ("B") ; } } );
That plugin should be sufficient if you are just trying to "simulate typing on an <input>
". However, depending on what you are really trying to do, you may need to do one or more of the following:
keydown
event, if the page's javascript triggers off of that.change
event, etc., if the page's javascript triggers off of that.unsafeWindow
, and/or @grant none
mode to do that.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With