提交表单后延迟页面卸载

时间:2013-08-30 08:11:09

标签: javascript forms delay

是否可以延迟在网页上调用卸载方法的时刻? 我有N页,每页都包含一个表格。我不希望用户点击提交按钮,所以我通过javascript模拟了隐藏提交按钮的点击。每次用户更改页面时都会激活此选项:

window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
}

这不起作用,但如果我在.click()

之后发出警报
window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
    alert("submitting form"); 
}

一切都像魅力一样。这是因为警报为表单提供了实际提交数据的时间;没有提醒页面在提交表单之前卸载页面,因此不会保存更改。

我试图在.click()

之后放置一个虚拟的setTimeout
window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
    setTimeout(console.log("dummy"), 200);
}

但它不起作用。对此有任何帮助或反馈将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你使用jquery,你可以尝试通过ajax保存。并且可能会将async添加到false,而不是推荐,但如果保存功能非常快,则可以在您的示例中使用。

http://api.jquery.com/jQuery.ajax/

这是我如何保存:

var $form = $('#formId');
$.ajax({
    type: "POST",
    url: $form.attr('action'),
    data: $form.serialize(),
    error: function (xhr, status, error) {
       // error
      },
    success: function (response) {
       // sucess
     }
});