2014-10-08 106 views
0

在JavaScript中,我按住了两个键,并且​​完美启用。当我释放其中一个密钥时,会触发keyup。到现在为止还挺好。但我仍然拿着一把钥匙,所以为什么打不出来?​​?我需要这个发生在我的比赛中。难道我做错了什么?这是预期的回应吗?有没有解决办法或什么的?keydown事件没有解雇,为什么?

window.addEventListener("keydown", 
function (e) { 
    console.log('down'); 
}, false); 

window.addEventListener('keyup', 
function (e) { 
    console.log('up'); 
}, false); 
+1

不知道我在下面,但为什么一键再次KEYDOWN大火,已经开了它,你还没有发布它呢? – kinakuta 2014-10-08 17:23:02

+1

Keydown在钥匙掉下时反复发作,但似乎如果他击中另一个钥匙然后进行锁定,第一个钥匙停止发射keydown。按键只发射一次 – juvian 2014-10-08 17:23:50

+0

Keydown反复发射......?呵呵。这对我来说是新闻。 – Katana314 2014-10-08 17:26:01

回答

0

我看来像你试图做这样的事情:

var down = false; 
 
var up = false; 
 
document.body.addEventListener('keydown', function (e) { 
 
    if(e.which === 40) { 
 
     down = true; 
 
    } 
 
    
 
    if(e.which === 38) { 
 
     up = true; 
 
    } 
 
}); 
 

 
document.body.addEventListener('keyup', function (e) { 
 
    if(e.which === 40) { 
 
     down = false; 
 
    } 
 
    
 
    if(e.which === 38) { 
 
     up = false; 
 
    } 
 
    
 
    // logic here for one but not the other 
 
    if(down && !up) { 
 
     alert('down but not up!'); 
 
    } 
 
});