Autor Zpráva
nethor
Profil
Zdravím,
snažím se napsat scriptík, který má uživatele upozornit, že neuložil změněná data ve formuláři.
Vycházím z tohoto:
window.onbeforeunload = function(e) {
    return "Změny nebyly uloženy, opravdu chcete opustit stránku?";
}
Takhle se ale hláška zobrazí při jakémkoliv opuštění stránky, což je k ničemu, jen to otravuje.

Potřeboval bych vyloučit zobrazení hlášky

1. při odeslání formuláře
2. když nedošlo ke změně dat ve formuláři

Na netu jsem žádné fungující řešení nenašel.

Máte nějaký nápad jak na to?
pako
Profil *
Vytvor premennu, ktoru zmenis pri odoslani formulara alebo ked nedojde k zmene dat a testuj ju v obsluhe beforeunload
nethor
Profil
Tak se mi to podařilo rozchodit.
Testování formuláře se zapne natavením <form class="WarnSave" ....

var WarnSave = false;

$('form.WarnSave input').focus(function() { 
    WarnSave = true;
}); 

$('form.WarnSave textarea').focus(function() { 
    WarnSave = true;
}); 

$('form.WarnSave :submit').click(function() { 
    WarnSave = false;
}); 

$('form.WarnSave').submit(function() { 
    WarnSave = false;
    return true    ;
}); 

$(window).bind('beforeunload', function() {
    if (WarnSave) {
      return "Změny je třeba uložit.";
    }
}); 

Jen mi nejde změnit hlášku, každý prohlížeč si tam píše něco jiného.
Nejde to nějak obejít, třeba přes confirm?
pako
Profil *
podla https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload Since 25 May 2011, the HTML5 specification states that calls to window.showModalDialog(), window.alert(), window.confirm(), and window.prompt() methods may be ignored during this event.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: