Hallo,
danke schon mal für die schnelle Antwort, hier ist mal der Code für das Formular.
ich meinte eigentlich den HTML-Code, nicht den serverseitigen PHP-Code, der es erzeugt. Das macht es nur schwieriger zu lesen - zumal du den PHP-Code im Posting als JS markiert hast, so dass das Syntax-Highlighting völlig falsch ist (hab's korrigiert).
<form method="POST" action="lager.php" onsubmit="return checkIsSet();">
Das ist die wesentliche Stelle, auch wenn immer noch einiges fehlt. Zum Beispiel das HTML-Element mit der ID "test", auf das sich dein Javascript aus dem Originalpost bezieht. Zum Beispiel die Javascript-Funktion checkIsSet(), die beim Absenden des Formulars aufgerufen werden soll.
Also, was passiert? Wie ich schon vermutet habe: Das Formular soll abgeschickt werden, dann wird erst die Funktion checkIsSet() aufgerufen.
Im Fehlerfall gibt die vermutlich false zurück, womit die Standard-Aktion (das Absenden des Formulars) unterdrückt wird. Ergo: Die Fehlermeldung bleibt sichtbar.
Im Erfolgsfall muss checkIsSet() aber true zurückgeben, also wird das Formular ganz normal abgesendet, und das PHP-Script lager.php sendet eine neue Seite an den Browser. Damit ist natürlich die bisher angezeigte Seite (und somit auch dein erzeugter Hinweistext) hinfällig und bleibt nur so lange sichtbar, bis die Antwort von lager.php eintrifft.
Die Lösung muss also sein, den Hinweistext (Erfolg/Fehler) nicht vor dem Formularversand zu erzeugen, sondern serverseitig beim Verarbeiten der Daten in das neue Dokument einzubauen. Eine serverseitige Überprüfung der Daten auf Gültigkeit hast du doch hoffentlich? Denn die Javascript-Prüfung lässt sich ja jederzeit leicht aushebeln und kann daher nur eine gutgemeinte Ergänzung sein.
So long,
Martin
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy