我正在尝试在我的某个网络应用程序中实现SPI。因此,我从不离开主页面( window.onbeforeunload不会被解雇)。
这是简单的DOM结构
<html>
<head> include jquery and other js css stuff here </head>
<body>
<div id="menu">Here i do magic to generate a top menu bar</div>
<div id="content">
This is the main content area where all the pages get loaded.
</div>
</body>
每个菜单点击页面顶部的菜单栏,只需通过$.ajax()
在“内容”div中刷新新页面内容。
说,
我是否可以捕获此事件并警告用户可能未保存的数据?如果是,怎么样?
我试着看Destroyed event。但是在元素(例如表单)被删除后,被破坏的事件被称为。我想在 之前捕捉 事件,并可能将其停止。
答案 0 :(得分:0)
当一个表单字段聚焦时,您可以设想一个变量或data-*
属性:
$('#formID input').focus(
function(){
$(this).closest('form').attr('data-inprogress','true');
/* or:
var formInProgress = true;
*/
});
$('form').submit(
function(){
$(this).attr('data-inprogress','false');
/* or:
formInProgress = false;
*/
});
然后,在点击会触发页面更改或删除form
本身的元素时,请检查属性或变量,如果存在,请与用户确认他们要丢弃形式:
$('.pageChangeElements').click(
function(){
if ($('#formID').attr('data-inprogress') == 'true'){
var c = confirm("Do you really want to discard the form?");
if (c) {
// continue
}
else {
return false;
}
}
});