我想让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.
您可能还想使用
addEventListener
和attachEvent
绑定(bind)事件处理程序。有关此的更多信息,请查看quirksmode.org - Advanced event registration models。