2011-07-24 13 views
6

Tworzę datagrid z setkami wierszy, które zawierają pole wyboru w każdym wierszu, aby użytkownik mógł wybrać element z siatki.Zapobieganie utracie danych formularza przez nawigację od strony

Teraz użytkownik może spędzić dużo czasu, filtrując/przeszukując sieć i zaznaczając wymagane pola wyboru, tylko po to, aby przypadkowo nacisnąć klawisz Backspace na klawiaturze lub kliknąć hiperłącze na stronie. A oni straciliby wszystkie zaznaczone pola wyboru.

Dlatego chcę wprowadzić pewne funkcje, w przypadku zaznaczenia co najmniej jednego pola wyboru, a jeśli użytkownik niechcący wykona czynność, która oddzieliłaby go od strony, wyświetli się komunikat potwierdzenia JavaScript, aby powiadomić użytkownika to.

Pola wyboru będą należeć do tej samej grupy, na przykład będą nazywane "produktami".

Czy to w ogóle możliwe?

+1

Czy próbowałeś już spojrzeć na LocalStorage HTML5? – PhD

Odpowiedz

10

Występuje zdarzenie beforeunload, które występuje, gdy użytkownik odejdzie: http://jsfiddle.net/FprNV/1/.

Zwrócenie ciągu znaków powoduje wyświetlenie komunikatu z dwoma przyciskami (pozostań/nawiguj); Dokładna implementacja tego okna dialogowego jest różna w różnych przeglądarkach.

$(window).bind('beforeunload', function() { 
    var checkboxcount = $("input:checkbox:checked").length; 
    if(checkboxcount > 0) { 
     return 'Are you sure?'; 
    } 
}); 
+0

Czy działa również w celu opuszczenia strony przez opublikowanie innego formularza? – TMS

+1

Czy ta przeglądarka jest kompatybilna? Czy przeglądarki mogą go wyłączyć? (niektóre strony źle wykorzystują tę funkcję i są naprawdę denerwujące, gdy próbujesz je zamknąć ...) – TMS

+0

@ Tomas Telensky: Działa dla każdego wyjścia, również zamykania okna itp. Nie jestem świadomy żadnego sposobu wyłączenia go, że użytkownik może korzystać. Działa jednak na wszystkich głównych przeglądarkach. ... z wyjątkiem Opery i Safari, teraz widzę. Wygląda na to, że tylko Chrome wyświetla niestandardową wiadomość, a IE i Firefox pokazują ogólny wbudowany komunikat. – pimvdb

Powiązane problemy