Wenn Sie also “b” übermitteln, erhalten Sie nur die Felder innerhalb des inneren Formulars. Wenn Sie “a” einreichen, erhalten Sie alle Felder abzüglich derer innerhalb von “b”.
Wenn dies nicht möglich ist, welche Problemumgehungen für diese Situation sind verfügbar?
Es scheint mir, dass dies tatsächlich ein sehr häufiges Bedürfnis ist, das von DB-Schnittstellen bekannt ist — Wenn ein Formular Tabelle A aktualisiert und diese Tabelle ein Feld hat, das mit Tabelle B verknüpft ist, wollen wir oft eine Möglichkeit, Einträge dafür zu aktualisieren oder zu erstellen verknüpftes Feld, ohne das aktuelle Formular verlassen zu müssen. Verschachtelte Unterformulare wären eine sehr intuitive Möglichkeit, dies zu tun (und sind die Benutzeroberfläche, die von mehreren Desktop-Datenbanken implementiert wird).
– Monotasker
29. Februar 2012 um 19:38 Uhr
Es ist nicht gültig. Es gibt Problemumgehungen, aber Sie sollten eine andere Methode verwenden, um diese Daten zu erhalten. Stellen Sie sich ein Formular vor, das alle Daten an ein PHP-Mail-Skript sendet, das dann einen Teil (den Teil von a) als eine E-Mail und einen Teil (den Teil von b) als eine weitere E-Mail sendet. Oder in eine Datenbank oder was auch immer Sie mit diesen Daten machen. Verschachtelungsformen können durchgeführt werden, aber es ist NICHT die Antwort!
– Benutzer1596138
16. Mai 2013 um 21:48 Uhr
mögliches Duplikat von Können Sie HTML-Formulare verschachteln?
– Benutzer
18. August 2014 um 22:25 Uhr
Die Frage ist gut, aber eine schnelle Google-Suche (ohne auf die bereitgestellten Links zu klicken) zeigt, ob Formulare innerhalb von Formularen gültig sind oder nicht. Ich persönlich mochte die Antwort von @Andreas.
– Jarett Lloyd
8. Mai 2019 um 15:33 Uhr
GeneQ
A. Es ist weder gültiges HTML noch XHTML
In der offiziellen XHTML-Spezifikation des W3C, Abschnitt B. „Element Prohibitions“, heißt es:
“Formular darf keine anderen Formularelemente enthalten.”
“Jedes Formular muss in ein FORM-Element eingeschlossen werden. Es können mehrere Formulare in einem einzigen Dokument vorhanden sein, aber das FORM-Element kann nicht verschachtelt werden.”
B. Die Problemumgehung
Es gibt Problemumgehungen mit JavaScript, ohne dass Formular-Tags verschachtelt werden müssen.
“So erstellen Sie ein verschachteltes Formular.” (Trotz des Titels ist dies nicht verschachtelte Formular-Tags, aber ein JavaScript-Workaround).
Antworten auf diese StackOverflow-Frage
Notiz:Obwohl man die W3C-Validierer dazu bringen kann, eine Seite zu passieren, indem man das DOM per Skripting manipuliert, ist es immer noch kein legales HTML. Das Problem bei der Verwendung solcher Ansätze besteht darin, dass das Verhalten Ihres Codes jetzt nicht über Browser hinweg garantiert ist. (da es nicht Standard ist)
Siehe meinen Kommentar oben …. Dies ist eine wunderbare Antwort, eine großartige Problemumgehung, aber eine schreckliche Praxis. Sie können genau dasselbe mit weniger Aufwand tun, indem Sie alle Daten an ein PHP-Skript senden und von dort aus teilen und an ihre eigenen Ziele senden. Obwohl Sie die Frage beantwortet haben, was großartig ist, ist es nur eine schlechte und sinnlose Übung, weil Sie es in kürzerer Zeit richtig machen könnten.
– Benutzer1596138
16. Mai 2013 um 21:51 Uhr
Andreas
Falls jemand diesen Beitrag hier findet, ist eine großartige Lösung ohne die Notwendigkeit von JS. Verwenden Sie zwei Submit-Buttons mit unterschiedlichen Namensattributen Überprüfen Sie in Ihrer Serversprache, welcher Submit-Button gedrückt wurde, da nur einer von ihnen an den Server gesendet wird.
<form method="post" action="ServerFileToExecute.php">
<input type="submit" name="save" value="Click here to save" />
<input type="submit" name="delete" value="Click here to delete" />
</form>
Die Serverseite könnte in etwa so aussehen, wenn Sie PHP verwenden:
Dies ist nicht dasselbe, in diesem Fall möchten Sie auf dieselbe Seite gehen und verschiedene Aktionen ausführen. Mit 2 Formularen können Sie auf verschiedene Seiten gehen und / ODER sich jeweils unterschiedliche Informationen senden lassen.
– Luis Tellez
10. März 2014 um 20:35 Uhr
Sie könnten eine PHP-Datei als Wrapper verwenden und jede gewünschte Datei einschließen, wenn Sie den Code in verschiedenen Dateien haben möchten. Anstelle von (echo “stored!”;) könntest du also schreiben (include “a.php”;)
–Andreas
27. Juni 2014 um 13:55 Uhr
Ich habe mehrere Löschschaltflächen in meinem Formular (der Grund, warum ich in Anbetracht eines verschachtelten Formulars hierher gekommen bin) 1 für jeden Datensatz und ein Listen-Kontrollkästchen für jeden, um eine Massenlöschung durchzuführen. Ihre Antwort hat mich dazu veranlasst, meinen Plan zu überdenken. Ich denke jetzt, dass ich die Schaltflächen für das einzelne Löschen mit einer numerischen ID und das Massenlöschen so benennen sollte. Ich mache PHP das Sortieren.
– CodingInTheUK
21. März 2015 um 18:01 Uhr
@Andreas ist auf dem Geld. Dies ist die natürliche Lösung, um zu variieren, wie Formulareingaben interpretiert werden. Wenn Sie Post/Redirect/Get verwenden, kann das Ziel ebenfalls variieren. Wenn Sie jedoch auf der Serverseite nicht die Flexibilität haben, Ihre Aktionen in einem einzigen „aORb“-Endpunkt zu kombinieren, dann stecken Sie, fürchte ich, mit einem Hack fest.
– Benutzer81962
14. Februar 2016 um 22:31 Uhr
HTML 4.x und HTML5 verbieten verschachtelte Formulare, aber HTML5 ermöglicht eine Problemumgehung mit dem Attribut “form” (“Formularbesitzer”).
Bei HTML 4.x können Sie:
Verwenden Sie ein oder mehrere zusätzliche Formulare mit nur ausgeblendeten Feldern und JavaScript, um die Eingaben festzulegen und das Formular abzusenden.
Verwenden Sie CSS, um mehrere HTML-Formulare so anzuordnen, dass sie wie eine einzige Entität aussehen – aber ich denke, das ist zu schwierig.
Ich bin mir nicht sicher, warum dies abgelehnt wurde. Hier der Link zum W3C-Bereich der Formularbesitzer: w3.org/TR/html5/…
Wie andere gesagt haben, ist es kein gültiges HTML.
Es hört sich so an, als würden Sie dies tun, um die Formulare visuell ineinander zu positionieren. Wenn das der Fall ist, erstellen Sie einfach zwei separate Formulare und verwenden Sie CSS, um sie zu positionieren.
David Grant
Nein, die HTML-Spezifikation besagt, dass nein FORM Element sollte ein anderes enthalten FORM Element.
Robin Manoli
Eine Möglichkeit besteht darin, einen Iframe innerhalb der äußeren Form zu haben. Das Iframe enthält das innere Formular. Verwenden Sie unbedingt die <base target="_parent" /> -Tag innerhalb des Head-Tags des Iframes, damit sich das Formular als Teil der Hauptseite verhält.
Christian Studer
Sie können Ihre eigene Frage sehr einfach beantworten, indem Sie den HTML-Code in die eingeben W3-Validator. (Es verfügt über ein Texteingabefeld, Sie müssen Ihren Code nicht einmal auf einem Server ablegen …)
(Und nein, es wird nicht validiert.)
9159500cookie-checkIst es zulässig, ein HTML-Formular in einem anderen HTML-Formular zu haben?yes
Es scheint mir, dass dies tatsächlich ein sehr häufiges Bedürfnis ist, das von DB-Schnittstellen bekannt ist — Wenn ein Formular Tabelle A aktualisiert und diese Tabelle ein Feld hat, das mit Tabelle B verknüpft ist, wollen wir oft eine Möglichkeit, Einträge dafür zu aktualisieren oder zu erstellen verknüpftes Feld, ohne das aktuelle Formular verlassen zu müssen. Verschachtelte Unterformulare wären eine sehr intuitive Möglichkeit, dies zu tun (und sind die Benutzeroberfläche, die von mehreren Desktop-Datenbanken implementiert wird).
– Monotasker
29. Februar 2012 um 19:38 Uhr
Es ist nicht gültig. Es gibt Problemumgehungen, aber Sie sollten eine andere Methode verwenden, um diese Daten zu erhalten. Stellen Sie sich ein Formular vor, das alle Daten an ein PHP-Mail-Skript sendet, das dann einen Teil (den Teil von a) als eine E-Mail und einen Teil (den Teil von b) als eine weitere E-Mail sendet. Oder in eine Datenbank oder was auch immer Sie mit diesen Daten machen. Verschachtelungsformen können durchgeführt werden, aber es ist NICHT die Antwort!
– Benutzer1596138
16. Mai 2013 um 21:48 Uhr
mögliches Duplikat von Können Sie HTML-Formulare verschachteln?
– Benutzer
18. August 2014 um 22:25 Uhr
Die Frage ist gut, aber eine schnelle Google-Suche (ohne auf die bereitgestellten Links zu klicken) zeigt, ob Formulare innerhalb von Formularen gültig sind oder nicht. Ich persönlich mochte die Antwort von @Andreas.
– Jarett Lloyd
8. Mai 2019 um 15:33 Uhr