はじめに
いろいろな事情があって読み込ませてるjsファイルがいじれないけど、なんとかして多重クリック抑止入れないといけないってことありますよね。
そんなときにこんな方法どうですかってやつです。
こんな感じ
「click」ってボタンがあったとき、って想定です。
<button onclick="window.clicked?event.preventDefault():(window.clicked=true)">click</button>
ちなみにclickって擬音なんだそうで、日本語訳すると多分「カチッ」です。日本語でも「ポチる」って言い方あるので、動詞にするとそんな感じになる予感がしてます。
https://www.85begin.com/columns/click
ちゃんとやるとこんな感じ
普通、windowオブジェクトに勝手になんか値を入れてしまうのは良くないので……
<button class="preventMultipleClick">click</button>
<script>
const preventMultipleClick = {
clicked: false,
checkClicked: (event) => {
if(preventMultipleClick.clicked){
event.preventDefault()
}else{
preventMultipleClick.clicked = true;
console.log('click'); //多重クリックされてないことを確認する用
}
}
}
document.querySelectorAll('.preventMultipleClick').forEach(elm => {
elm.addEventListener('click', preventMultipleClick.checkClicked);
});
</script>
なげえw
ちなみにイベントリスナーをjQueryで書くと少しだけ短くできます。
こういうときにありがたみを感じますね。
$('.preventMultipleClick').on('click', preventMultipleClick.checkClicked);
ご利用は用法用量にお気をつけください。