5568 sujets

Sémantique web et HTML

Bonjour à tous,

J'suis un p'tit nouveau ici, donc salut à tous ceux que je ne connais pas d'autres forums.

Je travaille actuellement sur un méta-moteur de recherches (http://www.999-search.com), et j'ai presque réussi à valider entièrement les pages (sans véritablement m'en soucier au départ). Le même problème arrive sur chaque page, des erreurs du type :
a écrit :
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.


Mon code pour cette partie se trouve être :
<form method="get" action="c-google-live-yahoo" id="formmain">
<input type="text" name="q" size="41" maxlength="2048" value=""/><br/>
<select name="lang">
<option value="*">Aucun Filtre</option><option value="-">---------------------------</option><option value="fr">Fran&#xE7;ais</option><option value="-">---------------------------</option><option value="en">Anglais</option>
</select>
<input type="submit" value="Rechercher !"/>
</form>


Je sais bien, ça aurait pu être plus propre (genre virer ce <br />, ce que je ferai dès que j'aurai résolu mon premier problème).

Merci d'avance pour toute aide ou tout conseil que vous pourrez me fournir Smiley smile
Modifié par Bh@Mp0 (19 Jan 2007 - 10:18)
Bonjour & bienvenue !

Comme indiqué par le validateur (sauf que c'est en anglais, évidemment), tu ne peux pas placer <input /> directement à l'intérieur de <form>.

Il doit se trouver à l'intérieur de "p", "h1", "h2", ... :
<form method="..." action="...">
   <p><label for="q">Rechercher : </label><input type="text" name="search-q" id="q" /></p>
</form>


Edit: pour la "propreté" de ton code, il vaut mieux s'inquiéter de l'absence de <label> que la présence de <br /> Smiley cligne
Modifié par Thomas D. (18 Jan 2007 - 21:53)
Héhé merci pour ton aide Smiley smile

Pour tout te dire, je comprend très bien l'anglais (je vis en Angleterre en ce moment Smiley lol ), mais je pensais que la règle était inverse (pas de <p> ou un autre dans un <form>), et donc j'ai cru que le validateur se gourrait ! Smiley lol

Bon, il me reste un problème de validation XHTML1.1, j'ai cru voir ça Smiley smile
Bon, j'arrive à peu près à ce que je veux (même si je suis une bille en design, mais c'est une autre affaire Smiley lol ).
Quant au label, je n'en mets pas vu que je n'ai pas de texte descriptif ... ou alors j'ai raté l'intérêt de cette balise Smiley smile
Bh@Mp0 a écrit :
Quant au label, je n'en mets pas vu que je n'ai pas de texte descriptif ... ou alors j'ai raté l'intérêt de cette balise Smiley smile

L'intérêt est de décrire ce que le champ de formulaire est censé contenir, tout simplement Smiley cligne

Pour ton erreur de validation en XHTML 1.1, je t'arrête tout de suite, tu travailles avec un mauvais Doctype. C'est XHTML 1.0 que tu devrais utiliser ...
Thomas D. a écrit :

L'intérêt est de décrire ce que le champ de formulaire est censé contenir, tout simplement Smiley cligne

Le problème est que je ne veux pas écrire ce texte Smiley smile Alors je vais voir pour faire un "display: none;" (je mets dans un coin de mon esprit).

Thomas D. a écrit :

Pour ton erreur de validation en XHTML 1.1, je t'arrête tout de suite, tu travailles avec un mauvais Doctype. C'est XHTML 1.0 que tu devrais utiliser ...

En fait, c'est un peu particulier, car je travaille en XHTML1.0 Strict et XHTML1.1 : si le navigateur est capable de prendre en compte du XHTML1.1, je lui en balance, sinon j'envoie du XHTML1.0 Strict. Mais bon, ça semble globalement fonctionner Smiley smile
a écrit :
Le problème est que je ne veux pas écrire ce texte.


C'est dommage, c'est pourtant rendre la navigation plus confortable à certains publics?
Modifié par knarf (19 Jan 2007 - 00:37)
Bh@Mp0 a écrit :
Le problème est que je ne veux pas écrire ce texte Smiley smile Alors je vais voir pour faire un "display: none;" (je mets dans un coin de mon esprit).
Le "display:none" pose malheureusement un fâcheux problème d'accessibilité. Il est donc recommandé de procéder par un déplacement du contenu de "label" hors de la zone d'affichage du navigateur en établissant une règle telle que:
label {position:absolute; top:-5000px}
Administrateur
Benjamin D.C. a écrit :
Le "display:none" pose malheureusement un fâcheux problème d'accessibilité.

Exact

Au fait, la question initiale de ce sujet ("Input dans form interdit ?") semble résolue, non ?
Modifié par Raphael (19 Jan 2007 - 10:04)
Raphael a écrit :
Au fait, la question initiale de ce sujet ("Input dans form interdit ?") semble résolue, non ?

Oui, j'ai oublié Smiley confused
Merci à tous !
Bonjour,

Bh@Mp0 a écrit :

En fait, c'est un peu particulier, car je travaille en XHTML1.0 Strict et XHTML1.1 : si le navigateur est capable de prendre en compte du XHTML1.1, je lui en balance, sinon j'envoie du XHTML1.0 Strict. Mais bon, ça semble globalement fonctionner Smiley smile


Pas tout à fait : les types de contenu sont actuellement inappropriés. Utiliser application/xhtml+xml (dans l'en-tête HTTP) pour les navigateurs supportant ce type de contenu. Ne pas servir XHTML1.1 en text/html.
Laurent Denis a écrit :
Utiliser application/xhtml+xml (dans l'en-tête HTTP) pour les navigateurs supportant ce type de contenu. Ne pas servir XHTML1.1 en text/html.

Je pensais l'avoir fait ... je vais voir cela Smiley smile