2017-03-09 60 views
1

我发现这种方式模拟多个按键事件,而是用它,我只能在.which设置一个键码,我想模拟按键
ALT + 在空间 + X同时。如何在同一时间

对于ALT我可以使用.altKey = true;

$(".btn").click(function() { 
    var e = jQuery.Event("keypress"); 
    e.which = 88;  // x code value 
    e.altKey = true;  // Alt key pressed 
    $("input").trigger(e); 
}); 

如何添加空间邀请码?

+0

除了结在手指试图以按压与

你可以用两个事件实现它左手,不知道大图是什么,我假设你有一个事件监听器在执行一些代码的密钥组合设置。那么为什么不直接调用目标函数而不是模拟键的组合呢? – Nope

+0

请参阅http://stackoverflow.com/questions/17504496/javascript-two-key-pressed-at-the-same-time。这是为了处理按键。所以看起来事件一次只能容纳一个'which'键加上修饰符(alt,shift等)。您需要将多个事件传递给'input'并从那里处理。或者直接调用该方法,就像@Fran所说的那样。 – G0dsquad

+0

是的,我可以简单地调用这个函数,但是这个问题的答案可以回答问题,例如最小化窗口的功能,以后我会需要(alt + space + n),也许编辑问题更好,我会看到链接@ G0dsquad –

回答

0

对于我之前的回答,我表示歉意。我想过如何处理。现在我修改代码来处理和触发:KeyDown和使用keyUp这样的:

var x, 
    alt, 
    space; 

document.addEventListener('keydown', function (e) { 
    e = window.event ? event : e; 
    switch (e.keyCode) { 
     case 88: 
      x = true; 
      break; 
     case 18: 
      alt = true; 
      break; 
     case 32: 
      space = true; 
      break; 
    } 
}); 

document.addEventListener('keyup', function (e) { 
    if (x && alt && space) { 
     alert("alt + space + x Pressed!"); 
    } 

    x = alt = space = false; 
}); 

function triggerEvent(eventName, keyCode) { 
    var event; // The custom event that will be created 

    if (document.createEvent) { 
     event = document.createEvent('HTMLEvents'); 
     event.initEvent(eventName, true, true); 
    } else { 
     event = document.createEventObject(); 
     event.eventType = eventName; 
    } 

    event.eventName = eventName; 
    event.keyCode = keyCode || null; 

    if (document.createEvent) { 
     document.dispatchEvent(event); 
    } else { 
     document.fireEvent('on' + event.eventType, event); 
    } 
} 

triggerEvent('keydown', 88); 
triggerEvent('keydown', 18); 
triggerEvent('keydown', 32); 
triggerEvent('keyup'); 

https://jsfiddle.net/m83omwq5/1/

+0

你的方法检测到组合,但不模拟,无论如何,谢谢你,也许我不能这样做。 –

+0

哦,对不起。任何方式,你可以触发这些事件相同的顺序:) –

+0

嘿!我纠正了代码(以前是关于如何处理) - 现在如何处理和触发 –