13

寻找一种使用 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);
        });
});
4

2 回答 2

22

使用修饰键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/

于 2012-04-09T23:40:42.220 回答
2
  1. 你不能直接模拟按键事件,你只能触发绑定到它们的 javascript 处理程序。因此,考虑简单地编写一个函数来封装您希望按键执行的操作,让按键处理程序调用该函数,并通过简单地调用相同的函数来“模拟”其他地方的按键。
  2. 如果你真的必须模拟 ALT-F1 和类似的,你需要在keypress事件中设置其他属性(例如altKeyor metaKey),和/或按下修饰键的第一个触发keydown事件(在 JQuery/firefox 中,按下ALT给我一个keydown事件e.which == 18.)。归根结底,您只需要创建处理程序响应的相同事件。
于 2012-04-09T23:42:29.593 回答