我正在编写一个表单,我需要一个像stackoverflow这样的功能:“你已经开始编写或编辑一个帖子”.
我浏览了stackoverflow的代码,看看它们是如何做到的,但是我根本就不能适用于我的简单表单.这是他们对问题
function initNavPrevention(b) { if (b.which == "undefined") { return } var a = $("#wmd-input"); a.unbind("keypress",initNavPrevention); setConfirmUnload("You have started writing or editing a post.",a) }
其中一个功能触发了这个(我不知道c是什么):
if (c) { e.keypress(initNavPrevention) }
最后他们有setConfirmUnload(null);假设禁用它.
我的情况很简单我有一个页面,我加载了< form />通过AJAX,我想防止这种形式的加载离开页面而不点击提交按钮,或者如果用户点击取消,表单被禁用,并且预防将不会弹出.
有了这个代码,有人可以告诉我如何将它包含在我的网站上?
这是我的AJAX函数加载形式:
$("#projects_historics_edit_part_1").click(function(){ $("#ajax-loader").fadeIn('normal'); $.ajax({ url: BASE_URL + 'projects/ajax/get_historics_edit_part_1/' + PROJECT_ID,type: "POST",success: function(data) { $("div#projects_historics_part_1").html(data); $("#client").autocomplete(client_autcomplete_options); var inicofin = $("#initdate,#findate").datepicker(initdate_datepicker_options); } }); $("#ajax-loader").fadeOut("normal"); return false; });
先谢谢你!
解决方法
你可以这样使用
window.onbeforeunload
这样做:
window.onbeforeunload = function() { return 'Are you sure you want to navigate away from this page?'; };
所以在你的代码中,你可以把它放在$.ajax调用的成功回调中.
要取消确认,您可以这样做:
window.onbeforeunload = null;
另外,看到这个答案:How can I override the OnBeforeUnload dialog and replace it with my own?