フォーム送信の2重を一括で防止するJavaScrpt
これを書いておけばおけなはず。
(※formのsubmitイベントの衝突/前後は考慮していまっせん。)
document.querySelectorAll('form').forEach(function(form){
form.addEventListener('submit',function(e){
if(form.dataset.isSubmit){
e.preventDefault();
return;
}
form.dataset.isSubmit = '1';
e.currentTarget.querySelectorAll('button,input[type="submit"],input[type="image"]').forEach(function(el){
el.style.pointerEvents = 'none';
el.style.opacity = '0.7';
});
});
});
- 基本ブロック、送信ボタン類のCSS
pointer-events: none
にして押せなくする。(ついでに透明度さげて押せない感をアピール - 入力フィールドでエンターを連打するツワモノがいるので、送信時にデータセット
data-is-submit
を追加してフラグが立っていれば、送信しない。