4

フォームが送信されると、送信の2秒後にアラートが表示されるように、タイムアウト機能が必要です。私が使用しているコードは機能しません:

$(document).ready(function() {
  $("#newsletter").submit(function() {
     setTimeout(function() {
      alert("submitted");             
    }, 2000);
   });
});

しかし、2000 ミリ秒を 900 に変更すると、問題なく動作するようです。

$(document).ready(function() {
  $("#newsletter").submit(function() {
    setTimeout(function() {
     alert("submitted");              
   }, 900);
  });
});

2000ミリ秒を機能させるにはどうすればよいですか?

4

3 に答える 3

5

考えられる唯一の理由は、formが送信されaction、2 秒が経過する前にユーザーが新しいページ (フォームの ) に移動したことです。

Thilo のコメントで示唆されているように、アラートの表示が避けられない場合は、AJAX 経由で送信して、現在のページ (アラートするコードを含む) がそのまま残り、実行されるようにします。

于 2013-03-29T09:41:45.703 に答える
0

コードを次のように変更できます。

$(document).ready(function() {
  $("#newsletter").submit(function(event) {
     var element = this;
     event.preventDefault();
     setTimeout(function() {
      alert("submitted");

      //rest of the code

      element.submit();
    }, 2000);
   });
});

JSFIDDLE

于 2013-03-29T09:52:32.913 に答える
0

こんな感じで使えます。元のコードの問題は、割り当てられた時間の前に送信されたことです。

$(document).ready(function() {
    $("#newsletter").submit(function(e) {
        e.preventDefault();
        setTimeout(function() {
            alert("submitted");
        }, 2000);
    });
});
于 2013-03-29T09:58:37.663 に答える