如何使用jQuery触发键组合

时间:2010-10-08 18:43:32

标签: javascript jquery keydown

我编写了一些内容:

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

我使用.css("zoom")放大,但我需要按钮来模拟 CTRL + CTRL -

此代码对我不起作用:

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

请帮忙!

修改

我实际上想要zoom-inzoom-out整个网页,而不仅仅是输入字段。

2 个答案:

答案 0 :(得分:10)

jQuery通过在event对象上设置一个或多个属性来规范事件的修饰键。因此,您希望将event.ctrlKey设置为true,因此这适用于您:

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

但是,根据来源评论(下面链接):

  

您无法轻松更改事件对象中的值(可能出于安全原因)。

因此,如果您在构建Event对象后无法设置事件的属性,则可以$.extend()设置ctrlKey属性:

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

另一件事:我不确定您是否尝试将键代码50用于 + - 键。也许你是,并且你正在使用不同的键盘布局,但根据this demo50是用于命中 2 的JavaScript关键代码 - 所以它也可能是你的问题。


来源:comments on a jQuery API page


修改

除此之外,我认为你不能实际使用JavaScript改变浏览器的缩放级别,即使你是“发送”键盘命令也是如此。

Access browser's page zoom controls with javascript

答案 1 :(得分:1)

来源:http://www.scottklarr.com/topic/126/how-to-create-ctrl-key-shortcuts-in-javascript/

var isCtrl = false;

$(document).keyup(function (e) {
    if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 && isCtrl == true) {
        //run code for CTRL+S -- ie, save!
        return false;
    }
});

这适用于Ctrl + s,但您应该可以轻松修改它。