javascript - Javascript 中的公共(public)类对象监听器有问题吗?

标签 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;

此代码的预期功能是,当用户尝试离开页面时,如果公共(public)类“input-right”的任何输入具有任何值,则运行函数“save_data_check”。

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

我怎么听不到这个事件?

最佳答案

有两个问题:

  1. onbeforeunload 是一个不寻常事件。您只需返回您想要显示的消息即可。

  2. input 元素没有文本,它们有一个

所以:

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

关于javascript - Javascript 中的公共(public)类对象监听器有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286015/

相关文章:

javascript - 访问 Firefox Addon SDK main.js 文件中的自定义函数?

javascript - 如何在排序数组中插入值并保持数组排序?

css - 覆盖可点击的 d3 元素时无法点击 div

javascript - contentEditable 元素中的拖放事件

javascript - 如何获取所有 GlobalEventHandler 的列表?

javascript - php 中不弹出警报

javascript - Q Promise 中的错误处理

javascript - 仅当两个输入都模糊时触发某些内容

javascript - 使用 eventListener 捕获对所有 A 标签的点击

java - 为什么日期选择器会意外触发 JComboBox 的 actionPerformed?