2012-12-30 12 views
6

Mam textarea, która została przesłana z ajax, która używa onbeforeunload, aby ostrzec użytkownika, że ​​nie przesłał textarea, jeśli spróbuje zamknąć przeglądarkę. Problem polega na tym, że muszę jakoś oczyścić plik onbeforeunload w ramach pomyślnego przesłania ajax, tak aby onbeforeunload wiedział, że użytkownik pomyślnie przesłał formularz. Czy istnieje sposób, aby wyczyścić onbeforeunload za pomocą linii kodu, podobnie do clearTimeout lub clearInterval? Pokażę kod onbeforeunload, jaki mam, nawet jeśli nie uważam, że ma to znaczenie. B/c Szukam innej funkcji, aby to wyczyścić. Brak ram. Dziękuję Ci.Wyczyść Onbeforeunload

Wywołanie funkcji

unsavedChangesWarning(); 

onbeforeunload Funkcja

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

Odpowiedz

13

window.onbeforeunload = null będzie je wyczyścić. Po prostu dodaj to, zanim spróbujesz przekierować użytkownika w dowolnym miejscu.

+0

gracias! to zrobiło! – gmustudent

1

dla jQuery to wygląda:

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

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

będę faktycznie przy użyciu powyższego rozwiązania, aby umożliwić czyste odświeżanie jeśli sesji użytkownika wygasł. Jednak w twoim przypadku użycia wydaje mi się, że bardziej sensowne jest po prostu warunek wstępny przed rozładowaniem.

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