0

我有这样的jquery代码:

$('input:not(:button,:submit),textarea,select').change(function () {
    window.onbeforeunload = function () {
        if (warnMessage != null) return warnMessage;
    }
});

$('input:submit').click(function (e) {
    warnMessage = null;
});

这用于在用户尝试关闭浏览器窗口或在单击链接时导航到新页面时显示消息。除了此代码排除所有提交类型按钮外,它运行良好。

我有 3 个 ID 为 MainContent_Button1、MainContent_Button2、MainContent_Button3 的提交按钮。如何修改上面的代码,使其排除这 3 个按钮。此外,我希望这三个按钮不要将 warnMessage 设置为 null,并且我希望这三个按钮允许 onbeforeunload 事件。我试图简单地调出每个按钮并执行以下操作:

$("#MainContent_Button1").click(function (e) {
    warnMessage = "You have unsaved changes on this page!";
    window.onbeforeunload = function () {
        return warnMessage;
    }
});

但是,即使我把它放在上面的代码之前,这也不起作用......那么我在顶部发布的内容有什么办法可以将这 3 个按钮排除在外吗?

4

1 回答 1

1

这很容易,我认为你在正确的轨道上。您可以使用.not()jQuery 中的函数。请参阅以下代码:

$('input,textarea,select').change(function () {
    window.onbeforeunload = function () {
        if (warnMessage != null) return warnMessage;
    }
});

$('input:submit').not('#MainContent_Button1, #MainContent_Button2, #MainContent_Button3').click(function (e) {
    warnMessage = null;
});
于 2012-08-03T12:44:07.720 回答