4

我想要一个超时功能,所以当提交表单时,警报会在提交后两秒显示。我使用的代码不起作用:

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

但是当我将 2000ms 更改为 900 时似乎工作正常:

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

我怎样才能让 2000 毫秒工作?

4

3 回答 3

5

唯一可能的原因是您正在提交并且用户在 2 秒过去之前form被带到新页面(表单的)。action

正如 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 回答