Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to trigger key combo with jQuery

I have coded some stuff:

http://fincha.com/kunden/schmitt/

I zoom in with .css("zoom") but I need the buttons to simulate CTRL + or CTRL -

This code isn't working for me:

e = jQuery.Event("keydown");        
e.which = 50;       
$("input").trigger(e);

Please help!

EDIT

I actually wanted to zoom-in and zoom-out the whole web page, not just a input field.

like image 964
Fribu - Smart Solutions Avatar asked Oct 08 '10 18:10

Fribu - Smart Solutions


1 Answers

jQuery normalizes modifier keys on events by setting one or more properties on the event object. So, you want to set event.ctrlKey to true, so this should work for you:

e = jQuery.Event("keydown");        
e.which = 50;
e.ctrlKey = true;
$("input").trigger(e);

However, as per a comment at source (linked below):

You cannot easily change values in the event object (probably for security reasons).

So, if you're unable to set the event's properties after constructing the Event object, then you can $.extend() it to set the ctrlKey property:

e = jQuery.Event("keydown");
fake = $.extend({}, e, {which: 50, ctrlKey: true});
$("input").trigger(fake);

One other thing: I'm not sure if you're trying to use key code 50 for the + or the - keys. Maybe you are, and you're using a different keyboard layout, but according to this demo, 50 is the JavaScript key code for hitting 2 - so that could also be part of your problem.


Source: comments on a jQuery API page.


Edit:

All this aside, I don't think you can actually change the browser's zoom level using JavaScript, even if you're "sending" the keyboard command to do so.

Access browser's page zoom controls with javascript

like image 96
Matt Ball Avatar answered Oct 03 '22 20:10

Matt Ball