Ist es ein gültiges Markup und gilt es für die HTML / HTTP-Spezifikation? Wenn ich wollte
<form>
<input name="email" />
<input name="email" />
<input name="email" />
</form>
ist das gültig
Ist es ein gültiges Markup und gilt es für die HTML / HTTP-Spezifikation? Wenn ich wollte
<form>
<input name="email" />
<input name="email" />
<input name="email" />
</form>
ist das gültig
Antworten:
Wie auf SO angegeben :
Die Browser sind damit einverstanden. Die Analyse der Anwendungsbibliothek kann jedoch variieren.
Programme sollen identisch benannte Elemente zusammenfassen. Während die HTML-Spezifikation dies nicht explizit sagt, wird dies implizit in der Dokumentation zu Kontrollkästchen angegeben:
"Mehrere Kontrollkästchen in einem Formular können denselben Steuerelementnamen verwenden. So können Benutzer beispielsweise mithilfe von Kontrollkästchen mehrere Werte für dieselbe Eigenschaft auswählen."
Nebenbei bemerkt, in PHP können Sie Formularfelder mit demselben Namen haben, wenn Sie die Arry-Syntax von PHP für den Feldnamen verwenden:
<form>
<input name="email[]" />
<input name="email[]" />
<input name="email[]" />
</form>
Dies führt dazu, dass der Browser die Formularfelder in einer Syntax sendet, mit der PHP ein Array für diese Felder auffüllt : $_REQUEST['email']
. Wenn Sie PHP verwenden, ist dies die bevorzugte Methode, um damit umzugehen.
HTML5
Der nicht normative Abschnitt 4.10.1.3 Konfigurieren eines Formulars für die Kommunikation mit einem Server besagt ausdrücklich, dass es gültig ist:
Mehrere Steuerelemente können denselben Namen haben. Hier geben wir beispielsweise allen Kontrollkästchen den gleichen Namen, und der Server unterscheidet, welches Kontrollkästchen aktiviert wurde, indem er sieht, welche Werte mit diesem Namen gesendet werden. Wie die Optionsfelder erhalten sie auch eindeutige Werte mit dem Wertattribut.
Die normative Version davon ist einfach, dass es nirgendwo verboten ist und der Formularübermittlungsalgorithmus genau sagt, welche Anfrage generiert werden soll:
application/x-www-form-urlencoded
Schleife über den "Formulardatensatz" und spucken mehrere key=val
https://www.w3.org/TR/html5/forms.html#url-encoded-form-data aus