我想让onkeydown事件仅触发一次函数。为了再次触发该功能,用户必须释放键并再次按下/按住。
我知道它相当简单,但是我是JS的新手。另外,我更喜欢避免使用jQuery或其他库。
还有一件事,这对于ie和Firefox都应该起作用。

最佳答案

您可以设置一个标志:

var fired = false;

element.onkeydown = function() {
    if(!fired) {
        fired = true;
        // do something
    }
};

element.onkeyup = function() {
    fired = false;
};

或取消绑定(bind)并重新绑定(bind)事件处理程序(可能会更好):
function keyHandler() {
     this.onkeydown = null;
     // do something
}

element.onkeydown = keyHandler;

element.onkeyup = function() {
    this.onkeydown = keyHandler;
};

More information about "traditional" event handling.

您可能还想使用addEventListenerattachEvent绑定(bind)事件处理程序。有关此的更多信息,请查看quirksmode.org - Advanced event registration models

08-17 13:17
查看更多