如果用户输入了一些内容但又没有保存并尝试离开页面,该如何显示类似弹出模式的消息?

就像是:



如果您尝试输入URL,然后尝试转到Facebook BUT中的另一个页面,则会显示本机警报框,例如:



1.)有什么区别?警报是否内置在浏览器中?

2.)当发生类似事件时,如何使用jQuery创建自己的自定义模式框?

谢谢

最佳答案

由于您为此使用jQuery,因此我会将默认值附加到每个元素数据持有者,然后使用上面的onbeforeunload代码对照存储的原始值检查所有当前值...示例:

$(document).ready(function() {
    $('#formID input').each(function() {

        $(this).data('original', $(this).val());

    });
});

window.addEventListener('beforeunload', beforeUnload, true);
$(".submit").click(function(){
    window.removeEventListener('beforeunload', beforeUnload, true);

});


然后:

function beforeUnload(e) {
    $('#formID input').each(function() {

        if($(this).data('original') != $(this).val()) {
            return "You have unsaved changes!";
        }

    });
}


该代码适用于INPUT标签,您必须对其进行修改以对textarea进行类似检查,并根据需要选择元素。

09-20 22:02