admin管理员组

文章数量:1635324

问题描述:Javascript中keydown会重复触发,导致了重复提交的问题
解决方案:

一、使用keyup事件代替

document.addEventListener('keyup',function(){
	//dosomething...
});

该方法在shift+enter等组合键有一定概率不触发的问题,具体看个人操作习惯

二、使用flag变量控制

var flag=false;
document.addEventListener('keydown',function(){
	if(flag){
		return;
	}
	flag=true;
	//dosomething...
});
document.addEventListener('keyup',function(){
	flag=false;
});

该方法在shift+enter等组合键时需特殊处理

三、使用event.repeat

document.addEventListener('keydown',function(e){
	if(e.repeat){
		return ;
	}
	//doSomething...
});

该方法会有兼容性的问题,参考:http://help.dottoro/ljbupnfj.php,https://developer.mozilla/en-US/docs/Web/API/KeyboardEvent/repeat

本文标签: keydown