排除某些按钮

时间:2012-08-03 12:39:02

标签: jquery asp.net

我有像这样的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,我希望这3个按钮允许onbeforeunload事件。我试着简单地调出每个按钮并执行:

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

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

1 个答案:

答案 0 :(得分:1)

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

$('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;
});