在jQuery中触发多个按键和保持事件的方法

寻找一种使用jQuery模拟多键按键的方法。 例如ALT + F1(按住alt并按F1)。

我已经设法模拟F1按键,这要归功于: 使用jQuery触发按键事件的明确方法

寻找这样的东西:

$(".f1").click(function() { var e = jQuery.Event("keydown"); e.keyCode = 18; // ALT key pressed // while ALT key is pressed, hit the F1 Key $("input").trigger(e, function(){ var e = jQuery.Event("keydown"); e.which = 112; // F1 key $("input").trigger(e); }); }); 

使用修改键altctrlshift ,您可以专门为它们使用事件修饰符:

 $(".f1").click(function() { var e = jQuery.Event("keydown"); e.which = 112; // # F1 code value e.altKey = true; // Alt key pressed $("input").trigger(e); }); 

演示: http : //jsfiddle.net/jtbowden/2kcrg/

  1. 你不能直接模拟按键事件,你只能触发绑定到它们的javascript处理程序。 因此,考虑简单地编写一个函数来封装你想要你的keypress做什么,让keypress处理程序调用该函数,并通过简单地调用相同的函数来“模拟”其他地方的按键。
  2. 如果你真的必须模拟ALT-F1和类似的,你需要在keypress事件中设置其他属性(例如altKeymetaKey ),和/或首先触发keydown事件以按下修饰键(在JQuery / firefox中,按下ALT给我一个keydown事件与e.which == 18 )。 在一天结束时,您只需要创建处理程序响应的相同事件。