Formularerweiterung
Reiner M.
- javascript
Ich habe ein Formular, in dem sich ein "Hinzufügen"-Button befindet, nun möchte ich gern, dass bei Klick auf diesen Button das gleiche Formular, bzw. der gleiche Table neu erstellt und drunter angehängt wird.
Also nochmal kurz: Die Eingabe-Maske soll bei klick auf "hinzufügen" kopiert und unten angehängt werden.
Soweit ich herausbekommen habe, kann man dies mittel JavaScript ermöglichen, allerdings komme ich mit all den Beispielen die ich gefunden habe nicht so gut zurecht, dass gleich der gesammte Table kopiert wird.
Bitte helft mir möglichst mit einem speziell auf diesen Code:
angepassten Script, damit ich daraus ersehen kann, wie genau
das möglich ist >> Will ja auch lernen!
DER CODE:
<table border="0" width="533" cellpadding="0" cellspacing="0">
<tr>
<td width="107">
<p>Art:<br>
<select name="formselect1" size="1">
<option selected value="Geschwindigkeit">Geschwindigkeit</option>
<option value="Größe">Größe</option>
</select></p>
</td>
<td width="157">
<p>Beschreibung:<br>
<input type="text" name="formtext0"></p>
</td>
<td width="157">
<p>Preis:<br>
<input type="text" name="formtext2"> </p>
</td>
<td width="83">
<p><br>
<input type="button" name="Butto1" value="Hinzufügen" onclick="goForIt()"></p>
</td>
</tr>
</table>
Hallo,
Elemente wie eine Tabelle kannst du mit getElementById ansprechen und mit cloneNode duplizieren. Diese Kopie hängst du dann wieder mit appendChild an ein Element im DOM-Baum an, in dem Falle dasjenige, das als Elternelement für die fraglichen Tabellen dient (z.B. form).
Dein Problem wird eher sein: Wenn du auf diese Weise vorgehst, hast du mehrere Formularfelder gleichen Namens. Das ist nicht prinzipiell ein Problem, aber viele übliche serverseitige CGI-Umgebungen kommen damit nicht zurecht. PHP würde dir etwa über $_POST['formselect1'] nur den Wert eines Formularfeldes zurückgeben, selbst wenn mehrere übertragen werden. In PHP löst man dieses Problem, indem die Formularfelder name="formselect[]" bekommen. Es gibt dann einen Array $_POST['formselect'] mit allen Werten der Formularfelder mit dem Namen »formselect[]«.
Bitte helft mir möglichst mit einem speziell auf diesen Code:
angepassten Script, damit ich daraus ersehen kann, wie genau
das möglich ist >> Will ja auch lernen!
Den genauen Code kannst du dir selbst erarbeiten - der Lerneffekt dabei ist ungemein höher.
Mathias
Hallo,
Elemente wie eine Tabelle kannst du mit getElementById ansprechen und mit cloneNode duplizieren. Diese Kopie hängst du dann wieder mit appendChild an ein Element im DOM-Baum an, in dem Falle dasjenige, das als Elternelement für die fraglichen Tabellen dient (z.B. form).
Dein Problem wird eher sein: Wenn du auf diese Weise vorgehst, hast du mehrere Formularfelder gleichen Namens. Das ist nicht prinzipiell ein Problem, aber viele übliche serverseitige CGI-Umgebungen kommen damit nicht zurecht. PHP würde dir etwa über $_POST['formselect1'] nur den Wert eines Formularfeldes zurückgeben, selbst wenn mehrere übertragen werden. In PHP löst man dieses Problem, indem die Formularfelder name="formselect[]" bekommen. Es gibt dann einen Array $_POST['formselect'] mit allen Werten der Formularfelder mit dem Namen »formselect[]«.
Bitte helft mir möglichst mit einem speziell auf diesen Code:
angepassten Script, damit ich daraus ersehen kann, wie genau
das möglich ist >> Will ja auch lernen!Den genauen Code kannst du dir selbst erarbeiten - der Lerneffekt dabei ist ungemein höher.
Mathias
Danke, das hat mir sehr weitergeholfen!
Bitte helft mir möglichst mit einem speziell auf diesen Code:
angepassten Script, damit ich daraus ersehen kann, wie genau
das möglich ist >> Will ja auch lernen!Den genauen Code kannst du dir selbst erarbeiten - der Lerneffekt
dabei ist ungemein höher.
Es ist leider so, dass ich das ganze nicht mehr als 10-20 mal probiere und wenn es dann nicht funktioniert bekomme ich ne kriese und versuche das ganze auf eine umständlichere Weiße zu lösen, oder kall das alles hin und geh andere Wege über Scriptsprachen die ich schon kann!
Dabei ist dann ein fertiger Code viel Hilfreicher, da ich dabei die genaue Schreibweiße, Funktion und den richtigen Aufbau sehe und mir dann später auch mal abwandlungen daraus selbst erarbeiten kann.
Ich habe schon mit 9 Jahren das Programmieren in VB, C++, QB, Pascal und vieles mehr gelernt, und das nur weil ich Beispiele hatte, die ich immerwieder abwandeln konnte und dabei den Zusammenhang immer besser verstanden habe!
Theorie ist gut - Praxis ist jedoch viel besser! ;-)
MFG Reiner
Hallo,
Danke, das hat mir sehr weitergeholfen!
Gut. Was hast du schon probiert und wo kommst du nicht weiter?
Bitte verstehe mich nicht falsch: Leute stecken hier ihre begrenzte Freizeit hinein und können daher nur Hilfe zur Selbsthilfe geben. Auch die SELFHTML-Dokumentation ist aus dem Zweck verfasst, dass sich jemand mit ihrer Hilfe die Fähigkeiten selbst erarbeiten kann.
Ich habe dir nicht nur das Konzept geliefert, sondern auch die nötigen DOM-Methoden in SELFHTML gezeigt. Bitte eigne dir diese DOM-Grundlagen erst einmal an - wenn du in einem konkreten Punkt nicht weiter weißt, kannst du gerne noch einmal nachfragen. Andernfalls musst du warten, bis jemand Zeit und Lust findet, dir ein fertiges Script zu schreiben.
Mathias