1

可能重复:
如何显示“您确定要离开此页面吗?” 何时提交更改?

Stackoverflow 有一个非常有趣的功能:如果您开始写一个新问题,然后您尝试离开该页面,它会显示一个警告,要求您确认是否要离开此页面。无论您是输入新地址并在地址栏中输入它,使用前进/后退按钮等,这都有效。

这是如何运作的?我有兴趣了解有关警报本身的更少信息,更具体地了解触发警报的事件/代码。

谢谢!

4

4 回答 4

4

修改文本区域时设置一个标志。unload()在窗口事件上检查标志,并在alert()需要时显示。像这样的东西:

var textAmended = false;
$("textarea").change(function() {
    textAmended = true;
});

$(window).unload(function() {
    if (textAmended) {
        alert('You started writing a question...');
    }
});

有关 unload() 的更多信息

于 2012-12-12T10:35:45.930 回答
0

这通常通过检查 textarea、input 等的值并更改 window.onunload 函数来完成,或者通过传递字符串或不传递任何内容,如下所示:

$('textarea').change(function() {
    if( this.value == "" ) {
        window.onbeforeunload = null;
    }else{
        window.onbeforeunload = "Are you sure you want to leave?";
    }
});

那应该触发内置确认!

于 2012-12-12T10:46:46.567 回答
0

我认为您需要确认只是离开当前窗口或关闭它:

http://jsfiddle.net/tLWZX/

$(window).on('beforeunload', function() {
    return 'You have unsaved changes.';
});
于 2012-12-12T10:47:46.223 回答
0
window.onbeforeunload = exit;
function exit() {
var t = 0;
$("textarea").each( function() {
var v = $(this).val();
if(v!="") {
t=t+1;
}
});
if(t>=1) {
return "You Have Some text written in textareas. Still you want to leave?";
}
}

你想要的是最好和最纯粹的方式!

http://jsfiddle.net/p4NPh/

于 2012-12-12T11:11:17.100 回答