0

次のようにして、大きなフォームでの送信の重複クリックを無効にしようとしています。

$(document).ready(function () {
  $('#loading').hide();
  $('form').bind('submit', function (e) {
     $('#loading').show();
     $(this).find('input:submit').attr('disabled', 'disabled');
  });
});

私も試しました:

  $('input:submit').click(function () {
     $(this).attr('disabled', true);
  });

ただし、送信がクリックされてからボタンが無効になるまでに数秒の顕著な遅延があります。

この遅延を解消する方法、または少なくとも原因を特定する方法はありますか?

4

3 に答える 3

1

フォームが非常に大きい (そして UX を忘れている)場合は、ID/属性セレクター構文を使用して送信ボタンを検索してみてください使用しているセレクターを使用して DOM を介して作業するのに苦労している可能性があります。

ドキュメントに注意してください:

:submit は jQuery 拡張機能であり、CSS 仕様の一部ではないため、:submit を使用するクエリは、ネイティブ DOM の querySelectorAll() メソッドによって提供されるパフォーマンス向上を利用できません。最新のブラウザーでパフォーマンスを向上させるには、代わりに [type="submit"] を使用してください。

于 2012-04-30T19:22:39.657 に答える
0

クリス、

これらの行に沿って送信をオーバーライドします。これは完璧だとは言いませんが、UI に考えを収集する機会を与えます :):

$('input:submit').click(function (e) {
    var outerItem = this;
    e.preventDefault();
    $(this).attr('disabled', 'disabled');
    setTimeout(function () { outerItem.submit(); }, 10);
    return false;
});

免責事項; テストされていないため、emptor に注意してください。

さらに参照: http://api.jquery.com/submit/

于 2012-04-30T19:54:51.563 に答える
0

あるべきではありません...別の場所で問題が発生しています。

これは遅延のないライブの例です

于 2012-04-30T19:16:35.993 に答える