6 Stimmen

Ist es notwendig, INPUT-Elemente in ein DIV-Element zu setzen?

Warum gibt es bei der W3c-HTML-Validierung einen Fehler? Ich verwende HTML 4.01 Strict doctype.

<form method="get" action="/search" id="search">

   <input type="text" value="search" maxlength="80" class="textbox" >

</form>

und dies nicht?

  <form method="get" action="/search" id="search">
    <div>
       <input type="text" value="search" maxlength="80" class="textbox" >
    </div>
  </form>

Dies ist ein Fehler

Dokumenttyp nicht erlaubt "INPUT" hier; es fehlt ein "P", " "PRE", "DIV", "ADDRESS" Start-Tag

Ist es notwendig, die input in einem div ?

3voto

Quentin Punkte 850700
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

A Formular kann eine Block Element (mit Ausnahme eines anderen Formulars) oder ein Skriptelement.

Ein Eingang ist kein Blockelement, aber die meisten Blockelemente können Inline-Elemente enthalten, zu denen auch Eingänge gehören.

3voto

fijter Punkte 17127

Bei der strengen Validierung benötigen Sie ein Blockelement um Ihre Eingabefelder herum; Die beste Wahl wäre hier die Verwendung eines <fieldset> .

1voto

naivists Punkte 31588

Der offizielle Grund dafür ist, dass die FORM-Elemente in HTML4 streng genommen nur Block Elemente, aber Blockelemente dürfen ihrerseits Formulareingaben enthalten. Daher ist die Struktur form->block element->form input muss verwendet werden.

Ich kann keinen ernsthaften Grund finden, warum das so ist. Es klingt so, als wollten die Autoren von HTML keine Formulare zulassen, die in einer Zeile beginnen, dann in die nächste Zeile übergehen und dann irgendwo in der dritten Zeile eine Schaltfläche zum Absenden haben (was man immer noch erreichen kann, indem man das display Eigenschaft eines Formulars, wenn Sie es brauchen. Zum Beispiel, dieser Artikel auf 24ways stellt lediglich fest, dass es einen Unterschied zwischen Übergangs- und strengen Normen gibt".

Ein weiterer Vergleich Staaten (sie sprechen über xhtml vs. html, aber die Idee ist die gleiche):

In XHTML müssen die Elemente semantisch kodiert werden. Tabellen und Formulare können nicht Formularelemente, die Inline-Elemente sind, müssen mit Element auf Blockebene , Absatz oder eine Tabellenzelle.

Dies lässt mich vermuten, dass das Element FORM nicht "semantisch genug" ist, um andere Elemente zu enthalten. Normalerweise ist es nicht dazu gedacht, Ihren Code zu markieren, sondern eher ein technisches Element, das anzeigt, wohin die Daten gesendet werden sollen. Daher ist es technisch gesehen ein BLOCK-Element, aber es braucht etwas "semantischeres", um die eigentlichen Eingabefelder zu enthalten.

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