Formular++
als Präsentation ▻Zeile zu einem Formular hinzufügen
Ohne Javascript sind Web Formulare statisch. Um Eingabelemente hinzuzufügen oder zu löschen braucht man Javascript.
In diesem Beispiel verwenden wir Javascript, um ein Pizza-Bestellformular zu verändern.
Die wichtigsten DOM-Befehle für dieses Beispiel sind cloneNode()
und insertBefore()
.
Mit cloneNode
können wir die Kopie eines einzelnen DOM-Knoten oder eines ganzen DOM-Baums erstellen.
Dieser Klon ist zuerst einmal nicht Teil des Originaldokuments. Man muss ihn erst wieder
einfügen:
let p = document.querySelector("div.pizza"); let new_pizza = p.cloneNode(true);
Eingabeelemente zu clonen ist nicht trivial: jedes Eingabeelement benötigt einen eindeutigen Namen.
Es wäre eine Menge Arbeit, um neue Namen für neue Eingabeelemente zu erzeugen. In diesem Beispiel
vermeinden wird das mit Hilfe von PHP: PHP kann GET-Parameter als Array behandeln:
Wenn wir das Eingabe-Element size
nennen, ist sein Wert in in PHP als $_GET['size']
erhältlich und zwar als String.
Wenn wir mehrere Eingabeelemente mit dem namen size[]
versehen (mit eckigen Klammern als Teil des Namen),
sind die Werte all dieser Felder wieder als $_GET['size']
erhältlich, und zwar als Array.
Deswegen sieht eine Zeile des Pizza-Bestellformulars so aus:
<div class="pizza"> <span class="removethis">x</span> <select name="pizzatype[]"> <option selected="selected">Magaritha</option> <option>Vegetarian</option> <option>Quattro Staggione</option> </select> <br> <label>add Garlic <select name="addgarlic[]"> <option selected="selected">no</option> <option>yes</option> </select> </label> <label>add Cheese <select name="addcheese[]"> <option selected="selected">no</option> <option>yes</option> </select> </label> <br> <label>anything else? <input name="comment[]" type="text"> </label> </div>
Fertiges Formular Demo