Warum ist ein Eingabe-Tag nicht direkt in einem Formular-Tag erlaubt?

8

Ich lese gerade folgendes bei Ссылка :

  

Elemente auf Blockebene (z. B. <input> ) sind nicht direkt in <form> -Tags bis HTML5 gültig.

Ich hatte noch nie etwas in dieser Richtung gehört, und jedes grundlegende HTML-Tutorial, das ich gesehen habe, scheint gut zu sein, wenn ich Input-Tags direkt in ein Form-Tag setze. Also meine Frage hat drei Teile:

  • Ist die obige Aussage legitim?
  • Warum ist das der Fall? (War es nur ein Versehen, oder waren die Ersteller der HTML-Spezifikation versucht, bestimmte Probleme durch Erstellen dieser Regel zu verhindern?)
  • Was ist der empfohlene Weg, um ein Formular mit Eingaben zu erstellen? (Sollen wir nur ein div oder eine Tabelle direkt innerhalb des Formular-Tags erstellen?)
StriplingWarrior 25.03.2011, 23:15
quelle

4 Antworten

8

Es ist Standards Pedantics.

  • Die Aussage ist legitim, soweit es den Standard betrifft: in HTML 4.01 die Definition for <form> gibt an, dass es nur Blockelemente oder <script> enthalten darf. Soweit was jeder Browser in der Welt erlaubt, ist es in Ordnung.
  • Ich kann nur vermuten, dass sie <form> als überhaupt kein Layout-Tag betrachten und alle Inline-Elemente in einem Block-Element enthalten sollen.
  • Ja, Sie sollten ein <div> , <table> , <p> oder ein anderes blockpräsentierendes Element in <form> platzieren.
Anomie 25.03.2011, 23:26
quelle
5

Die obige Aussage ist wahr. In HTML ist der & lt; -Eingabe & gt; Das Tag ist kein gültiges Element der & lt; Form & gt; Etikett. Um dies zu validieren, müssen Sie den & lt; input & gt; Tag mit einem & lt; fieldset & gt; oder & lt; div & gt ;. Was unten gezeigt wird.

%Vor%     
user672118 25.03.2011 23:26
quelle
1

Zunächst möchte ich erwähnen, dass es nicht wirklich verwunderlich ist, dass HTML-Tutorials Ihnen beibringen, etwas falsch zu machen - HTML war praktisch so konzipiert, dass es jede Art und Weise akzeptiert, Dinge zu tun. Sie können Tags nicht geschlossen lassen, Sie können sie falsch verschachteln und was nicht, was einer der Gründe ist, warum ich persönlich XHTML verwende.

Diese Aussage scheint zu stimmen, aber aufgrund der Art und Weise, wie HTML gestaltet ist, spielt es in der Praxis keine Rolle. XHTML verbietet das wahrscheinlich.

Form ist eigentlich kein Container. Es sieht so aus, als ob die Entwickler der HTML-Spezifikation Dinge wie Block-Level-Elemente mögen, in die man alles hineinpacken sollte. Dies ist nur meine Sicht darauf, aber soweit ich es bemerkt habe, sollten Elemente ohne Blockebene nicht ohne einen geeigneten Container für sie verwendet werden. Es ist genau so, dass Sie keine blockfreien Elemente in einem <blockquote> platzieren sollten. Block-Level-Elemente sind Container für andere Elemente.

Ein div, eine Tabelle - ich denke sogar ein <p> macht das Ding hier.

    
user308323 25.03.2011 23:24
quelle
0

Nun, gemäß der HTML 4.01-Spezifikation (speziell Abschnitt 17.3 ) das ist technisch wahr. Allerdings kenne ich keinen Webbrowser, der Ihnen ein Problem damit bereiten könnte.

    
Harry Steinhilber 25.03.2011 23:27
quelle

Tags und Links