Javascript中的公共类对象侦听器出现问题?

时间:2015-05-17 10:43:43

标签: javascript events event-handling onbeforeunload

我有以下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',如果任何具有公共类'input-right'的输入具有任何值。

这个函数的问题似乎是它最基本的部分:事件监听器。删除if语句检查公共类输入是否有任何值会在每次我尝试离开页面时产生弹出窗口?

我怎么没有听这个事件?

1 个答案:

答案 0 :(得分:2)

有两个问题:

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

  2. input元素没有文字,它们有

  3. 所以:

    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;
    

    Live Example