9 Stimmen

Warum ist ein Eingabe-Tag nicht direkt innerhalb eines Formular-Tags erlaubt?

Ich habe gerade das Folgende gelesen http://w3fools.com/#html_forms :

Nicht-Block-Level-Elemente (wie z.B. <input> ) sind nicht direkt innerhalb von <form> Tags bis HTML5.

Ich habe noch nie etwas in dieser Richtung gehört, und alle grundlegenden HTML-Tutorials, die ich gesehen habe, scheinen damit einverstanden zu sein, Eingabe-Tags direkt in ein Formular-Tag zu setzen. Also meine Frage hat drei Teile:

  • Ist die obige Aussage legitim?
  • Warum ist dies der Fall? (War es einfach ein Versehen, oder wollten die Verfasser der HTML-Spezifikation mit dieser Regel bestimmte Probleme vermeiden?)
  • Wie sollte ein Formular mit Eingaben aufgebaut sein? (Sollen wir einfach ein div oder eine Tabelle direkt innerhalb des Formular-Tags erstellen?)

10voto

Anomie Punkte 89467

Das ist Standard-Pedanterie.

  • Die Aussage ist legitim, soweit es um den Standard geht: In HTML 4.01 ist die Definition für <form> legt fest, dass er nur Blockelemente enthalten darf oder <script> . Was alle Browser der Welt zulassen, ist in Ordnung.
  • Ich kann nur vermuten, dass sie die <form> kein Layout-Tag sein, und alle Inline-Elemente sollen in einem Block-Element enthalten sein.
  • Ja, Sie sollen eine <div> , <table> , <p> oder ein anderes Blockpräsentationselement innerhalb der <form> .

5voto

Die obige Aussage ist richtig. In HTML the <input> tag is not a valid element of the <form> tag. Damit es gültig ist, müssen Sie den <input>-Tag entweder mit einem <fieldset> oder einem <div> umschließen. Dies wird im Folgenden gezeigt.

<form action="/" method="post">
    <fieldset>
        Field: <input type="text" name="field" />
        <br />
        <input type="submit" value="Submit" />
    </fieldset>
</form>

1voto

Zunächst einmal möchte ich erwähnen, dass es nicht wirklich überraschend ist, dass man in HTML-Tutorials lernt, Dinge falsch zu machen - HTML wurde praktisch so konzipiert, dass es jede Art und Weise akzeptiert, Dinge zu tun. Man kann Tags ungeschlossen lassen, sie falsch verschachteln und so weiter, was einer der Gründe ist, warum ich persönlich XHTML verwende.

Diese Aussage scheint richtig zu sein, aber aufgrund der Art und Weise, wie HTML aufgebaut ist, spielt sie in der Praxis keine Rolle. XHTML verbietet dies wahrscheinlich.

Die Form ist nicht wirklich ein Container. Es scheint, als ob die Schöpfer der HTML-Spezifikation von Dingen wie Block-Level-Elementen angetan waren, in die man alles einpacken sollte. Das ist zwar nur meine Ansicht, aber soweit ich weiß, sollten Elemente, die nicht auf Blockebene angesiedelt sind, nicht ohne einen entsprechenden Container verwendet werden. Es ist genau so, wie man Nicht-Block-Level-Elemente nicht in ein <blockquote> . Block-Level-Elemente sind Container für andere Elemente.

Ein div, eine Tabelle - ich glaube, sogar ein <p> macht die Sache hier.

0voto

Harry Steinhilber Punkte 5099

Nun, gemäß der HTML 4.01-Spezifikation (insbesondere Abschnitt 17.3 ), ist dies technisch gesehen richtig. Ich kenne jedoch keinen Webbrowser, der Ihnen damit Probleme bereiten würde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X