我在jquery中的preventDefualt函数之后提交了一个问题。我想在点击提交按钮后显示div,10秒后我想隐藏它并继续提交表单。我读了很多关于simmilar问题的答案,但我无法得到正确的解决方案。这是一个代码:
$('#form').submit(function(e) {
e.preventDefault(e);
showPopup();
$(this).unbind('submit').submit();
});
var showPopup = function() {
$('#popup').fadeIn('slow');
setTimeout(function() { hidePopup(); }, 10000 );
return true;
}
var hidePopup = function() {
$('#popup').fadeOut('slow');
return true;
}
谢谢:)
答案 0 :(得分:1)
工作示例:JSFiddle
您可以使用setTimeout()实现该功能,并使用jquery手动发布表单。你还需要检查这是否是带有标志的第一个提交(取消绑定onsubmit也可以)。
var allowSubmit = 0;
$('#form').submit(function(e) {
if(!allowSubmit)
{
e.preventDefault();
showPopup();
setTimeout("$('#form').submit();",10000);
allowSubmit = 1
}
});
var showPopup = function() {
$('#popup').fadeIn('slow');
setTimeout(function() { hidePopup(); }, 10000 );
return true;
}
var hidePopup = function() {
$('#popup').fadeOut('slow');
return true;
}
答案 1 :(得分:0)
setTimeout
是异步的,它不会阻止。您必须通过表单并在结束时致电提交:
$('#form').submit(function (e) {
e.preventDefault(e);
showPopup(this);
});
var showPopup = function (form) {
$('#popup').fadeIn('slow');
setTimeout(function () {
hidePopup(form);
}, 10000);
}
var hidePopup = function (form) {
$('#popup').fadeOut('slow', function () {
$(form).unbind('submit').submit();
});
}