我希望有一个超时功能,所以当提交表单时,提交后两秒会显示警报。我使用的代码不起作用:
$(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毫秒工作?
答案 0 :(得分:5)
唯一可能的原因是您的form
已提交,用户将在2秒之前转到新页面(表单的action
)。
正如Thilo的评论中所建议的,如果显示警报是不可避免的,请通过AJAX提交,以便当前页面(包含警报代码)保持不变并因此执行。
答案 1 :(得分: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 强>
答案 2 :(得分:0)
你可以这样使用。原始代码的问题在于,它是在分配时间之前提交的。
$(document).ready(function() {
$("#newsletter").submit(function(e) {
e.preventDefault();
setTimeout(function() {
alert("submitted");
}, 2000);
});
});