2010-10-08 149 views

回答

8

jQuery通过在event对象上设置一个或多个属性来标准化事件的修饰键。所以,你要设置event.ctrlKeytrue,所以这应该为你工作:在源(下面的链接)

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是触击的JavaScript关键代码 - 因此这也可能是您问题的一部分。


来源:comments on a jQuery API page


编辑:

这一切不谈,我不认为你可以实际上改变使用JavaScript,即使你“送”的键盘命令做浏览器的缩放级别所以。

Access browser's page zoom controls with javascript

+0

感谢您的回复,您没错,没有办法面对这样的热键 – 2010-10-11 20:02:37

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,但你应该能够很容易地修改它。

+1

这不是我不喜欢的。我需要通过点击链接来模拟CTRL + – 2010-10-08 18:53:23

+0

哦!对不起,我误解了这个问题! – Stephen 2010-10-08 18:54:29

+0

我意识到这不是一个很好的答案,但我需要这个确切的解决方案来解决我自己的问题,所以谢谢! – 2011-06-02 07:01:47