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;
});

これは、ユーザーがブラウザウィンドウを閉じようとしたり、たとえばリンクをクリックしたときに新しいページに移動したりするときにメッセージを表示するために使用されます。このコードがすべての送信タイプボタンを除外することを除いて、これはうまく機能します。

IDがMainContent_Button1、MainContent_Button2、MainContent_Button3の3つの送信ボタンがあります。これらの3つのボタンを除外するように、上記のコードを変更するにはどうすればよいですか。さらに、これらの3つのボタンでwarnMessageをnullに設定しないようにし、これらの3つのボタンで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 に答える