2013-08-30 62 views
0

是否有可能延遲網頁上調用卸載方法的時間? 我有N頁,每頁包含一個表單。我不希望用戶點擊一個提交按鈕,所以我通過javascript模擬了隱藏的提交按鈕的點擊。這被激活,每次用戶改變頁面:提交表單後延遲頁面卸載

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

這並不工作,但如果我把警報。點擊()之後

window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
    alert("submitting form"); 
} 

一切就像一個魅力。這是因爲警報給了表單實際提交數據的時間;在提交表單之前卸載頁面時沒有提示,因此不會保存更改。

我試圖把一個虛擬的setTimeout。點擊()之後

window.onbeforeunload = function() { 
    document.getElementById('submit_id').click(); 
    setTimeout(console.log("dummy"), 200); 
} 

,但沒有奏效。任何幫助或反饋意見,將不勝感激。

+0

檢查:http://stackoverflow.com/questions/10873546/check-if-changes-saved-before-unload –

+0

嗨,謝謝你的評論。我嘗試onbeforeunload,但我不想顯示一個彈出頁面更改時。永遠。我只是wnat頁面更改,沒有任何提示給用戶... – AWG

+0

你使用jQuery嗎?如果是,請嘗試卸載,在保存函數中放入ajax:'$(window).unload(function(){do something});' –

回答

0

如果你使用jquery,你可以嘗試通過ajax保存。並且可能會將async添加到false,而不是推薦的,但如果save函數非常快,可以在您的示例中運行。

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 
    } 
}); 
+0

我結束了使用Jquery並通過發送POST序列化消息解決它,謝謝你的幫助。 – AWG