【问题标题】:Way to trigger multiple keypress and hold events in jQuery在jQuery中触发多个按键并按住事件的方法
【发布时间】:2012-04-22 06:21:32
【问题描述】:

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

【问题讨论】:

标签: jquery keyboard


【解决方案1】:

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

【讨论】:

  • 快速而巧妙
【解决方案2】:
  1. 您不能直接模拟按键事件,您只能触发绑定到它们的 javascript 处理程序。因此,请考虑简单地编写一个函数来封装您希望按键执行的操作,让按键处理程序调用该函数,并通过简单地调用相同的函数来“模拟”其他地方的按键。
  2. 如果你真的必须模拟ALT-F1和类似的,你需要在keypress事件中设置其他属性(例如altKeymetaKey),和/或首先触发keydown事件按下修饰键(在 JQuery/firefox 中,按 ALT 会给我一个带有e.which == 18keydown 事件。)。归根结底,您只需要创建处理程序响应的相同事件即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多