JavaScriptプログラムに関する各種メモ書き

送信ボタンをボタン連打や二重送信を防止しつつ「送信中」を表示する

● 送信ボタンクリック時にボタン連打や二重送信を防止しつつ「送信中」を表示する

● html

classnotrepeat を追加

<button type="submit" class="notrepeat">データ送信</button>

任意のテキストとアイコンをセットすることもできます。

<button type="submit" class="notrepeat" data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> データ送信中ですしばらくお待ちください。 ...">データ送信</button>

● js

以下の js を読み込ませる

notrepeat.js

<script>
  document.addEventListener('DOMContentLoaded', function() {
    const notrepeatElements = document.querySelectorAll('.notrepeat');

    notrepeatElements.forEach(function(element) {
      element.addEventListener('click', function() {
        if (this.dataset.loadingText) {
          this.innerHTML = this.dataset.loadingText;
        } else {
          this.innerHTML = "データ送信中 ... ";
        }
        setTimeout(function() {
          element.disabled = true;
        }, 1);
      });
    });
  });
</script>
No.1681
05/02 09:03

edit