5568 sujets

Sémantique web et HTML

Bonjour,
pour compté de nombre de caracteres pour la saisie de message sur un de mes formulaire, j'utilise un petit script qui est le suivant.
<script language="javascript" type="text/javascript">
function calculeLongueur(){
   var iLongueur, iLongueurRestante;
   iLongueur = document.getElementById('message').value.length;
   if (iLongueur>500) {
      document.getElementById('message').value = document.getElementById('message').value.substring(0,500);
      iLongueurRestante = 0;
   }
   else {
      iLongueurRestante = 500 - iLongueur;
   }
   if (iLongueurRestante <= 1)
      document.getElementById('indic').innerHTML = iLongueurRestante + "&nbsp;caract&egrave;re&nbsp;disponible";
   else
      document.getElementById('indic').innerHTML = iLongueurRestante + "&nbsp;caract&egrave;res&nbsp;disponibles";
}
</script>


en ayant ajouté ce script ma page n'est plus valid xhtml.

j'ai ce genres de messages qui me sont retrounés par le validateur w3c

Line 22, Column 26: character "<" is the first character of a delimiter but occurred as data
Line 125, Column 172: Attribute "maxlength" exists, but can not be used for this element.
Line 125, Column 177: required attribute "rows" not specified
Line 125, Column 177: required attribute "cols" not specified

est il possible d'adapté pour que se soit valide w3c ?
Modifié par fabrice88 (10 Jun 2009 - 10:56)
Bonsoir fabrice88,

pour rendre ton script valide, essaie de faire comme ceci :


<script language="javascript" type="text/javascript">
<![CDATA[

// Le contenu de ton script.

]]>
</script>
j'ai essayé ta méthode et j'ai un erreur de moins :
if (iLongueurRestante <= 1) n'existe plus

mais du coup le comptage des caracteres ne fonctionne plus.
D'accord.

a écrit :

Line 125, Column 172: Attribute "maxlength" exists, but can not be used for this element.
Line 125, Column 177: required attribute "rows" not specified
Line 125, Column 177: required attribute "cols" not specified


Si tu analyses tes erreurs, il faut que tu supprimes l'attribut maxlength et que tu spécifie les attributs rows ainsi que cols.

Essaie de corriger ton script et repasse-le au validateur du W3C.

Si, une fois que tu as effectué toutes ces modifications, ton script contient provoque encore des erreurs, je crains de ne pas pouvoir t'aider d'avantage.
ah bon ben c'est pas gagné car je sais pas dutout comment mettre ca aux normes.
pourquoi rows et cols ? je comprend pas se que sa vient faire là.
Es-tu sûr que c'est bien le script en question qui provoque les erreurs ?

Si tu enlèves ton script et que tu valides ta page, contient-t-elle des erreurs ?
Modifié par jQz (09 Jun 2009 - 21:15)
ok c'est bon sa fonction avec rows et cols.
ma page est donc valide w3c mais le decompte des caracteres ne se fait plus.

le fait d'avoir ajouter

<script language="javascript" type="text/javascript">
<![CDATA[

function calculeLongueur(){
   var iLongueur, iLongueurRestante;
   iLongueur = document.getElementById('message').value.length;
   if (iLongueur>500) {
      document.getElementById('message').value = document.getElementById('message').value.substring(0,500);
      iLongueurRestante = 0;
   }
   else {
      iLongueurRestante = 500 - iLongueur;
   }
   if (iLongueurRestante <= 1)
      document.getElementById('indic').innerHTML = iLongueurRestante + "&nbsp;caract&egrave;re&nbsp;disponible";
   else
      document.getElementById('indic').innerHTML = iLongueurRestante + "&nbsp;caract&egrave;res&nbsp;disponibles";
}
]]>
</script>
rend ma page valide mais du coup le script ne fonctionne plus.

la partie de mon formulaire est la suivante :
      <label>Votre message <span class="important">*</span></label>
      <textarea name="message" cols="50" rows="6" id="message" onfocus="calculeLongueur();" onblur="calculeLongueur();" onkeydown="calculeLongueur();" onkeyup="calculeLongueur();"></textarea>
      <br/>
      <label></label><div id="indic">500 caractères disponibles</div><br/>
Du coup tu dois avoir une erreur Javascript.

La bonne syntaxe est :

<script type="text/javascript">
//<![CDATA[

/* Code Javascript */

//]]>
</script>
@Florent V. : Dans ce cas, comme nous le montre ton article, aucune méthode ne fonctionne en HTML 4.01.
Il reste alors la solution de mettre le Javascript dans un fichier externe.

Cependant, dans le cas où l'on imagine que l'on fait un code Javascript correct (ie sans mettre des balises dans une variable mais en passant par des fonctions DOM), alors la validation passe parfaitement (sans compter les problèmes d'utilisation du CDATA dans le cas d'un document servi en text/html comme tu le soulèves).
Agylus a écrit :
@Florent V. : Dans ce cas, comme nous le montre ton article, aucune méthode ne fonctionne en HTML 4.01.

Si... il faut échapper les séquences de "</". Ce qui peut être fastidieux ou pas trop, suivant les cas. (Ou bien on fera du HTML 5 qui supprime cette contrainte (HTML 5 n'étant plus considéré comme une application de SGML).)