問題描述: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