Comment valider un formulaire en XHTML 1 Strict ?
… pas très logique, mais efficace !
Je me suis cassé le nez une heure aujourd’hui sur la validations d’un bête formulaire en XHTML 1.0 Strict :[ …
W3C me renvoyait dans mes basques, en me disant qu’il est incorrect d’inclure une balise « input » ou une balise « select » DANS une balise « form ».
C’est pourtant la syntaxe logique :
- form est une balise de type « block » (elle entraine un retour à la ligne apres fermeture)
- input et select sont des balises de type « inline » (on peut en aligner plusieurs sur la meme ligne)
- et si on ne peut mettre une balise de type « block » DANS une balise de type « inline », l’inverse ne pose pas de probleme.
Donc, donc… pas très logique, tout ça.
La solution consiste à mettre le contenu de la balise form… dans un calque.
C’est tout simple, comme l’oeuf de Christophe Colomb, et cela donne in fine :
<form method="post" action="" id="form1">
<div> <input type="text" id="montexte" name="montexte"></div>
</form>
Nota bene : La balise <div> peut-être remplacée par n’importe quelle balise de type « block » (<p>, <fieldset>, <ul>, etc.)
Et pouf, le formulaire est validé sur le site du W3C, en XHTML Strict :))
mais naaan, pour valider ton form en 1.1 ou en 1.0 strict tu dois mettre des balises fieldset, et la ça va marcher :
<form … >
<fieldset>
ici tes input, select..etc.
</fieldset>
</form>
C’est juste que les balises input et form ne peuvent pas avoir comme parent direct le body (si on ne compte pas la balise form)..
Donc tu pouvais les inclures dans un paragraphe ou dans une liste