5568 sujets

Sémantique web et HTML

Voila, un probleme au niveau d'un formulaire, le validateur me dit que j'ai pas le droit de mettre un input...

En gros mon site est composé de:
- un header
- un main dans lequel on trouve un menu a droite et a gauche
- un footer

Voila en gros en images:
http://img98.imageshack.us/img98/3177/siteemgs6dc.jpg

Le probleme se trouve au niveau du formulaire de la newsletter sur la gauche.

Mes menus sont intégrés de la maniere suivante: j'ai un template menu_basic dans lequel j'ai le code suivant:


<div id="BARRE_DROITE">
	{include file="summary/menu_lastminute.template"}  
	{include file="summary/menu_blocnote.template"}	
</div>

  
<div id="BARRE_GAUCHE">
	{include file="summary/menu_go1st.template"}	
	{include file="summary/menu_newsletter.template"}	
</div>



Mon template menu_newsletter.template est:


<div id="BARRE_BANNIERE_NEWSLETTER"></div>

<div class="BARRE_BANNIERE_CORPS">
	<form id="newsletter" method="post" action="FIXME.php">
	<input type="text" size="16" id="mailnewsletter" value="Votre mail" />
	<input type="submit" class="button" id="newslettersend" value="OK" />
	</form>	
	<br/>
	Recevez nos meuilleurs offres chaque semaine.
</div>
		
<div class="BARRE_BANNIERE_BAS"></div>


Bref y a vraiment rien de bien compliqué, d'autant qu'a mon avis l'erreur est forcement dans mon template newsletter etant donné que quand je vire l'include de ce template dans mon menu_basic.template, ou que je remplace par un menu deja existant que je fais apparaitre 2 fois, ma page devient valide xhtml stricte...

Enfin bref si vous voyez ce que c'est, svp aidez moi lol car la je me sent vraiment bien con, y a surement un truc tout idiot que j'ai du loupé je sais pas mais bon... ca m'eeeeneeeeeerveeeee Smiley cligne



au niveau des erreurs ca me donne exactement:


Line 185 column 70: document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag.

...e="16" id="mailnewsletter" value="Votre mail" />

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").


Error  Line 186 column 69: document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag.

... class="button" id="newslettersend" value="OK" />


Voila, en gros c'est bien le template de newsletter ^^

Merci d'avance
Modifié par rQL (22 May 2006 - 11:13)
Bonjour rQl,

Relis bien le message du validateur, la solution est là. Smiley cligne
Si tu n'y arrive pas, je repasserais t'aiguiller.

Bon courage,
Aymeric

PS : essaies de penser aux labels au passage.
a écrit :

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").


Bon alors deja la fin j'élimine (enfin je suppose que j'ai le droit de mettre un formulaire dans un div non ? ^^)

Alors il me reste: l'element input n'a pas le droit d'etre integré ici, et comme je n'ai pas d'element pas fermé, ca veut dire qu'il faut que je créé un div pour contenir chaque input??? :O C'est louche quand meme je trouve ca!

Et pour les labels, est-ce vraiment bien utile? je n'en ai jamais utilisé et je suis pas persuadé de leur interet...
bon, j'ai foutu ca:

<div class="FORMU_CONTENEUR">
<input type="text" size="16" id="mailnewsletter" name="mailnewsletter" value="Votre mail" />
</div>
<div class="FORMU_CONTENEUR">
<input type="submit" class="button" id="newslettersend" name="newslettersend" value="OK" />
</div>


avec

.FORMU_CONTENEUR {
}

je trouve ca bien con, mais ca marche donc bon...
Bonjour,

Le validateur te signalait l'absence d'un fieldset sur ton formulaire.

Par ailleurs il serait souhaitable que ton contrôle soit relié à un label au lieu de mettre l'étiquette comme valeur du contrôle.

Ce qui nous donnerait :


<div class="BARRE_BANNIERE_CORPS">
  <form id="newsletter" method="post" action="FIXME.php">
  <fieldset>
      <label for="mailnewsletter">Votre email</label>
      <input type="text" size="16" id="mailnewsletter" value="" />
      <input type="submit" class="button" id="newslettersend" value="OK" />
  </fieldset>
</form>	
<br/>
Recevez nos meuilleurs offres chaque semaine.
</div>


Ce qui constitue la structure minimale d'un formulaire.

Jean-pierre
oui mais non car:

j'ai un design précis a tenir, et je ne peux pas me permettre de placer un "Votre Email" avec un label dessus...

Je ne peux pas non plus me permettre de placer une bordure de fieldset autour de mon formulaire... (enfin ca je suppose qu'y a des options pour le virer non?)
tu peux mettre une autre balise qu'un field set... ou qu'un labe mais ça ne respect pas l'accessibilité. le validateur te dnne une liste non exhaustive des balise qui devrait encadrer <input>
Gectou4 a écrit :
tu peux mettre une autre balise qu'un field set... ou qu'un labe mais ça ne respect pas l'accessibilité. le validateur te dnne une liste non exhaustive des balise qui devrait encadrer <input>


CQFD. Smiley cligne

Un <p></p> suffit. c'est marqué dans le message. Je ne dis pas que c'est LA solution, mais ça passe la validation.
mais moi ce que je comprends pas c'est la logique du truc: pourquoi y aurait besoin d'un bloc different pour contenir chaque input ???
Modifié par rQL (22 May 2006 - 14:18)
il n'y a pas besoin d'un bloc pour chaque input. Il peut y avoir plusieurs champs dans le même fieldset ...

Pour respecter le design, rien ne t'empêche de redéfinir les styles du label, je crois ...