Mathias: Eingabeprüfung in Formularen, hat sich irgendwo was geändert?

Beitrag lesen

Hi,

das zweite hidden-Feld mit dem alten Inhalt brauchst du nicht. JavaScript kann auch so ursprünglichen Inhalt (.defaultValue) und aktuellen Inhalt (.value) unterscheiden.

function isFormChanged (form) {
 for (element = 0; element < document.getElementsByTagName('input').length; element++) with (document.getElementsByTagName('input')[element]) if (value !=  defaultValue) return true;
 return false;
}

Diese kleine Funktion checkt alle INPUT-Felder auf Veränderung. (Achtung: funktioniert nur ab N6/IE5/Opera5.) Du solltest dann die Buttons mit dem BUTTON-Befehl machen.

Bau das ganze dann am besten in den body.unload ein ...

<body onunload="if (isFormChanged(document.forms[0])) if (confirm('Änderungen speichern?')) with (document.forms[0]) {target = 'dummy'; submit();};">

Als TARGET lege ich einen unsichbaren dritten Frame "dummy" fest, da das aktuelle Fenster ja gleich aktualisiert wird und das Speichern oft fehl schlägt.

Alles klar?

m.