Ich habe die Formulare unten mal aufgezeigt, und denke, dass ihr so das Problem erkennt, und wahrscheinlich auch mal selbst hattet.
Also _das_ nenne ich mal eine ausführliche Problembeschreibung! Wenn's doch immer so wäre.. ,)
Wenn ein Benutzer im oberen Formular den Radio-Button Pkw anklickt, dann wird mittels Javascript onClick das Formular wieder aufgerufen und die Variable 'bus=0' übergeben. Das Formular baut sich dann entsprechend anders auf. In diesem Beispiel wird anstelle des Select-Menüs Preisstufe, dass Text-Feld Entfernung angezeigt. Bis hier hin habe ich noch kein Problem.
Falls der Benuter jetzt aber alle anderen Felder (Vorname, Nachname, Straße) bereits ausfüllt hat, und dann auf den PKW Radio-Button klickt, wird das Formular wie oben erwähnt neu aufgebaut und alle Benutzereingaben sind weg. Wie kann ich die bereits ausgefüllten Benutzereingaben aber behalten.
form.php?bus=1
|Bus |x| (Radio-Button) |
| _ |
|PkW |_| (Radio-Button) |
| |
| __________ |
|Preisstufe|_________^| (Select-Menü) |
form.php?bus=0
|Bus |_| (Radio-Button) |
| _ |
|PkW |x| (Radio-Button) |
| |
| __________ |
|Entfernung|__________| (Text-Feld) |
Zwei Möglichkeiten:
1. Zusätzlich zum Parameter bus alle anderen Felder mit übergeben. Da Du das mit bus schon gemacht hast, wird es bei den anderen Feldern sicher kein Problem sein, weitere Erklärung überflüssig.
2. Viel schöner wäre es allerdings, wenn das Formular garnicht erst neu übertragen werden müsste. Du kannst über das CSS-Attribut display Elemente in einer Seite verschwinden und wieder auftauchen lassen.
Dazu verpackst Du die Preisstufen- und Entfernungselemente in jeweils ein <div>-Block. Jeder <div>-Block bekommt eine eindeutige Kennung, z.B. <div id="preisstufenblock"> und <div id="entfernungsblock">. Über die Funktion document.getElementById([kennung]) kannst Du dann auf diesen Block zugreifen und das Attribut display zwischen "none" (versteckt) und "block" (anzeigen) umschalten, zum Beispiel:
document.getElementById("preisstufenblock").setAttribute("display","none");
Das Document Object Model findest Du in SelfHTML unter Javascript/DOM, insbesondere im node-Objekt.
Eine ähnliche Anwendung findest Du hier in der Forumshauptdatei: Klickst Du auf die kleine Grafik links von jedem Threadanfang, wird der Thread versteckt. Klickst Du nochmals drauf, erscheint er wieder.
Gruß,
soenk.e
PS: Für den Code werde ich hoffentlich nicht gesteinigt, er könnte fehlerbehaftet sein.