Submit送信以外のときダイアログで確認&移動する方法 jQuery

beforeunload

長いフォームの場合、途中まで入力したのに、あやまって戻ってしまいそれまでの入力がパー。 そんなときのためのjQueryコードがあります。
このイベントはOperaなど、一部対応していないブラウザがあるので注意。

Submitのときだけbeforeunloadを解除する

戻る、進める、更新、アンカーリンクなどのページ移動の際にページにとどまるかどうかの選択肢が表示されます。

ここで厄介なのがフォームの送信 submit でも反応すること。


$(function(){
    // ページ離脱イベント
    $(window).on('beforeunload',function(){
        return('ページ移動を確認します');
    });
    // Submitの場合のみ ページ離脱イベント解除
    $('form').on('submit',function(){
        $(window).off('beforeunload');
    });

    // submitボタンにsubmitというIDをつけて
    // $('#submit').on('click',function...というのもありです。
    // また、jQuery ver 1.7.0 以前は on off がbind unbindとなります。
});

alertではなくreturnであるところがポイントです。

選択肢のテキストを変更したいところですがセキュリティうんぬんで禁止されています。

このイベントに関数を括り付けて、画像アップロードフォームの一時画像ファイルを削除しようと考えたのですが、クロスブラウザでない以上無理ですね。
定期的にファイルを削除するcronを使おうと思います。

参考