Formulář & uložení JavaScriptem - pokračování
7 príspevkov
Archív diskusného fóra
Fórum je uzavreté a slúži iba na čítanie. Niektoré informácie môžu byť zastarané.
-
Včera jsem tu řešil, jak vyzvat uživatele k uložení dat, pokud opustí formulář jiným způsobem, než kliknutím odeslat (prostě odejdou na jinou stránku), nakonec jsem s vaší pomocí stvořil tenhle skritp: <script language="JavaScript"> odeslano = false; function kontrola() { if (odeslano) { return false; } prom = confirm("Data nebyla uložena, chcete je uložit?"); if (prom) { formular.submit(); return false; } else { return true; } } </script> No a v BODY pak mám onUnload="kontrola();". Jenže teď ten dialog vyskakuje při odchodu jinam vyskakuje nezávisle na tom, jestli se obsah formuláře změnil nebo ne, což dost otravuje, pokud se chci na data jen podívat a nechci je měnit. Šlo by nějak otestovat, jestli se obsah formuláře změnil, a volat pak dialogové okno pouze v případě, že se opravdu změnil? Předem všem děkuji :)
-
http://www.eggheadcafe.com/articles/20010406.asp
-
A nějaké jednodušší řešení by nebylo? Jsem rád, když skritpu, který použiju, rozumím, ale tohle je na mne moc složité...
-
Podľa mňa je to najjednoduchšie riešenie, je dobre popísané, takže sa dá jednoducho prispôsobiť. Najdôležitejšia funkcia je isDirty: tá prebehne všetky prvky, ktorých hodnoty sú odosielané na server. Porovnáva ich hodnoty s pôvodnými (defaultValue). Aby vo formulári na začiatku boli skutočne pôvodné hodnoty, tak treba na onload spraviť form.reset ().
-
Alebo pomôže niečo na tento spôsob: dať tým prvkom onchange="isDirty=true" a vytvoriť globálnu premennú isDirty=false.
-
No vyřešil jsem to vlastně nakonec úplně jednoduše (předtím mi nějak nedošlo, že existuje událost onChange) - prostě při načtení stránky nastavím zmeneno = false; a u každého prvku formuláře mám onChange = "zmeneno=true;" no a pak před vyskočením okna jen otestuju, jak vypadá zmeneno...
-
Abych nezapomněl: Děkuju...