Eingabeprüfung in Formularen, hat sich irgendwo was geändert?
Michael
- javascript
Wir entwicklen zur Zeit mit Perl und JavaScript eine Kundendatenbank. Dafür gibt es mehrere Eingabemasken.
Jede Eingabemaske wird mit Update an die Datenbank gesandt und verarbeitet, dann kann mittels Link auf die nächste gesprungen werden. Das spielt sich alles in einem Frame ab.
Unsere Benutzer sind nicht begeistert.
Sie wollen, daß wenn auf den Link nur nächsten Maske geklickt wird, automatisch alle Eingaben der aktuellen Maske in die Datenbank gespeichert werden.
Um den Datenverkehr und die Auslastung des Servers zu minimieren, wollen wir das aber so steuern, daß wenn der User auf den Link zur nächsten Maske klickt, automatisch geprüft wird, ob sich etwas in den Eingabefeldern geändert hat und abhängig davon entweder
Wer kann hier weiterhelfen?
Michael
Hi,
Was tun?
den document.formular.feld.value mit dem .defaultValue vergleichen.
Cheatah
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.