Ich habe eine lange Form, die ich in 6 Schritte aufgeteilt habe. Wenn das Formular geladen wird, werden alle Schritte geladen, aber nur der erste Schritt ist sichtbar. Der Rest hat CSS von, display:none
so dass sie versteckt sind. Wenn ein Schritt mit Javascript abgeschlossen und validiert ist, wird der aktuelle Schritt auf display:none
und der neue Schritt auf gesetzt display:block
. Im letzten Schritt sendet der Benutzer das Formular. Wie erwartet werden jedoch nur die Felder im display:block
Element auf der Seite gesendet. Alle ausgefüllten Felder in den Elementen mit display:none
werden ignoriert.
Gibt es eine Möglichkeit, die Felder innerhalb der display:none
Elemente zu senden ?
Wenn nicht, gibt es einen anderen Weg, um den gleichen Effekt zu erzielen?
quelle
display: none
in all meinen Tests Formularelemente innerhalb von Containern einzureichen .Antworten:
Stellen Sie sie stattdessen auf
visibility:hidden
undposition:absolute
ein. Die Felder werden nicht mit an den Server gesendetdisplay:none
, sondern mitvisibility:hidden
. Wenn Sie auch "Position" auf "Absolut" umschalten, sollten Sie den gleichen visuellen Effekt erzielen.Update Dies scheint in keinem aktuellen Browser mehr ein Problem zu sein (Stand November 2015). Felder werden auch dann gesendet, wenn die Anzeige auf "Keine" gesetzt ist. Felder, die deaktiviert sind, werden jedoch weiterhin nicht gesendet.
quelle
display:none;
. Das gleiche Problem tritt auf, wenn auf dem Feld ein anderes HTML-Element platziert ist.disabled
verhindert , dass Werte gesendet werden, aber in einigen älteren Browserndisplay:none
hätte dies auch diesen Effekt. Beachten Sie, dass diese Antwort vor 4 Jahren veröffentlicht wurde und nur für Entwickler gilt, die für diese älteren Browser entwickeln müssen.In HTML4, Abschnitt 17.13.2, heißt es ausdrücklich, dass selbst versteckte Steuerelemente, die die Anzeige verwenden, möglicherweise nicht zur Übermittlung gültig sind.
https://www.w3.org/TR/html401/interact/forms.html
Wenn der Browser die Anzeige ignoriert: keine, ist er nicht vollständig HTML-fähig. Ich empfehle, für einen echten Browser zu wechseln.
quelle