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

时间:2012-04-09 22:23:48

标签: jquery keyboard

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

由于以下原因,我设法模拟了F1按键: Definitive way to trigger keypress events with 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);
        });
});

2 个答案:

答案 0 :(得分:19)

使用修饰键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 :(得分:2)

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