在JavaScript中使用普通级对象侦听器的麻烦



我有以下JavaScript:

function save_data_check(e) {
    var input_value = $('.input-right').text();
    if (input_value !== "") {
        if(!e) e = window.event;
        e.cancelBubble = true;
        e.returnValue = 'You have unsaved data on this page.'; 
        if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
        }
    }
}
window.onbeforeunload = save_data_check;

当用户试图离开页面时,此代码的预期函数是运行'save_data_check'函数,如果任何带有公共类"输入右"的输入具有任何值,则该函数。

此功能的问题似乎是其中最基本的部分:事件侦听器。删除if语句检查是否对普通级输入有任何值,每次我尝试离开页面时都会产生弹出窗口?

我怎么不听这个事件?

有两个问题:

  1. onbeforeunload不寻常的事件。您只需返回要显示的消息。

  2. input元素没有文本,它们具有 value

so:

function save_data_check() {
    var msg;
    $('.input-right').each(function() {
        if (this.value) {
            msg = 'You have unsaved data on this page.';
            return false;
        }
    });
    return msg;
}
window.onbeforeunload = save_data_check;

实时示例

最新更新