问题描述
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.com/ljbupnfj.php,https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat
_32013641/article/details/90483032