9
votes

Pourquoi une balise d'entrée n'est-elle pas autorisée directement dans une étiquette de formulaire?

Je viens de lire les points suivants à http://w3fools.com/#html_forms :

Les éléments de niveau non blouse (tels que ) ne sont pas valides directement à l'intérieur de Tags jusqu'à HTML5.

Je n'avais jamais entendu parler de ces lignes, et chaque didacticiel de base de HTML que j'ai vu semble être très bien avec la mise en place des étiquettes d'entrée directement à l'intérieur d'une étiquette de formulaire. Donc, ma question a trois parties:

  • est la déclaration ci-dessus légitime?
  • Pourquoi est-ce le cas? (Était-ce simplement une supervision ou les créateurs de la SPE HTML tentent d'empêcher des problèmes spécifiques en créant cette règle?)
  • Quelle est la manière recommandée de construire un formulaire avec des entrées? (Sommes-nous simplement censés créer une table ou une table directement à l'intérieur de la balise de formulaire?)

1 commentaires

Yup, les enfants directs de formes doivent être des éléments de niveau de bloc. Voir ici: Vidasp.net/html-tructure-diagram.html


4 Réponses :


1
votes

Tout d'abord, j'aimerais mentionner que ce n'est pas vraiment surprenant que des tutoriels HTML vous apprennent à faire des choses mal - HTML était pratiquement conçue pour accepter tout moyen de faire des choses. Vous pouvez laisser des étiquettes non cassées, vous pouvez les nichez de manière incorrecte et ce qui est l'une des raisons pour lesquelles j'utilise personnellement XHTML.

Cette déclaration semble être vraie, mais à cause de la conception de HTML, cela n'a pas d'importance dans la pratique. XHTML interdit probablement cela.

Le formulaire n'est pas vraiment un conteneur d'une sorte. Il semble que les créateurs de la spécification HTML aiment les choses comme des éléments de niveau de bloc que vous devriez tout emballer à l'intérieur. Ce n'est que ma vue sur elle, mais aussi loin que j'ai remarqué, des éléments de niveau non blous ne doivent pas être utilisés sans un conteneur approprié pour eux. C'est exactement comme si vous ne devriez pas mettre des éléments de niveau non bloussière dans un

. Les éléments de niveau de bloc sont des conteneurs pour d'autres éléments.

Un div, une table - je pense même un

la chose ici.


0 commentaires

5
votes

La déclaration ci-dessus est vraie. Dans HTML, la balise n'est pas un élément valide de la balise . Afin de faire cette valide, vous devez joindre la balise avec un ou

. Qui est démontré ci-dessous.
<form action="/" method="post">
    <fieldset>
        Field: <input type="text" name="field" />
        <br />
        <input type="submit" value="Submit" />
    </fieldset>
</form>


0 commentaires

9
votes

C'est la pédantique des normes.

  • La déclaration est légitime aussi loin que la standard va: dans HTML 4.01, le Définition pour Spécifie qu'il ne peut contenir que des éléments de bloc ou