2012-12-30 8 views
6

私はajaxと提出されたテキストエリアを持っています。これはonbeforeunloadを使用して、ブラウザを閉じるときにテキストエリアを送信していないことをユーザに警告します。問題は、私が何らかの形で、ajax submitの成功の中でonbeforeunloadをクリアして、onbeforeunloadがユーザがフォームを正常に提出したことを知ることができるようにすることです。 clearTimeoutやclearIntervalに似た、コード行でonbeforeunloadをクリアする方法はありますか?私は現在私が持っているonbeforeunloadコードを表示しますが、私はそれは多くのb/cは私はこれをクリアするために別の関数を探していないと思うとは思わない。フレームワークはしないでください。ありがとうございました。Onbeforeunloadをクリアします

関数呼び出し

unsavedChangesWarning(); 

Onbeforeunload機能

function unsavedChangesWarning(){ 
    window.onbeforeunload = function(){ 
     return 'If you close this page you will lose your stride update!'; 
    }; 
} 

答えて

13

window.onbeforeunload = nullはそれをクリアされます。ユーザーをどこにでもリダイレクトしようとする前に、これを追加してください。 jQueryのために

+0

gracias!それはそれでした! – gmustudent

1

これは次のようになります。

$(window).on('beforeunload', function (e) 
{ 
    return 'Please dont leave me'; 
}); 

$(window).off('beforeunload'); 

私は実際にユーザーセッションの有効期限が切れている場合はきれいなリフレッシュを許可するように上記の溶液を使用することになります。しかし、あなたのユースケースでは、アンロードする前にonを単に条件付化するのがより理にかなっていると思います。

$('input, textarea, select').change(function() 
{ 
    $(this).parents('form').addClass('dirty'); 
}); 
window.onbeforeunload = function() 
{ 
    if ($('form.dirty').length) 
    { 
    var confirmationMessage = 'You have edited but not saved a form on this page.'; 

    (e || window.event).returnValue = confirmationMessage; //Gecko + IE 
    return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc. 
    } 
}; 
関連する問題