1

ダブルクリックを防ぎたいので、クリックイベントdisabledで要素に属性を設定するinputのは正しいことのようです。そして、他のスタックオーバーフローの回答はそれを反映しています。だから、これは私がjQueryを使ってCoffeeScriptで書いたものです:

$('input[type="submit"]').on('click', ->
  $(this).addClass('disabled').attr('disabled', 'disabled')
  $(this).val('Sending')
)

私はaddClass('disabled')財団のために持っています。

通常、これは機能します。ただし、クリックして戻ると、ボタンは無効のままです。ページに移動してページがキャッシュされた場合、ボタンは無効のままです。これらすべての小さな問題を処理する JavaScript ライブラリはありますか? これは非常に一般的なニーズのようです。上記に追加する必要がある JavaScript/jQuery がもう少しありますか?

私は、HTML5 にはこのための何らかのメカニズムがあると思っていたでしょう。

更新: イベントをリッスンし、pageshow送信ボタンを無効にしようとしました:

$('input[type="submit"]').on('pageshow', function() {
  console.log('pageshowed')
  $(this).removeClass('disabled').removeAttr('disabled').val('Submit');
});

ただし、ページが最初に読み込まれたときでも、何も起こりません。私はpageshow間違って使用していますか?

4

2 に答える 2

0

私はこの方法を使用します:

$(document).ready(function() {
  $('.auto-submit-disable')
    .submit(function () {
      $(this).find('button,input[type=submit]')
        .attr('disabled', 'true');
    });
});

if ($('.auto-submit-disable'))
  window.onunload = function(){}; // This forces re-execution of js

その後、class="auto-submit-disable"フォームを装着するだけです。バックナビゲーション時にすべての JS を繰り返すのは重いため、このメソッドはブラウザーにとって重いことに注意してください。

そのため、すべてのページで実行する一般的な方法としてはお勧めしません!!

于 2013-07-23T21:58:07.327 に答える