Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script decompte caracteres

Sujet résolu
    26 avril 2009 à 18:03:52

    Bonjour.

    Je ne m'y connais pas beaucoup en JS donc chercher sur google, et j'ai trouver un ptit script, je l'ai un peu mis a ma sauce et tel que je vous le montre, il fonctionne tres bien :
    var maximum = 300;
    function fUpdCompteur() {
    		var longueur = maximum - parseInt(document.formulaire.desc1.value.length);
    		if (longueur <= 0){
    			document.formulaire.compteur1.value = 0;
    			document.formulaire.desc1.value = document.formulaire.desc1.value.substring (0,maximum);
    		}
     		else
    			document.formulaire.compteur1.value = longueur;
    		}
    


    Ce code s'applique a un textarea (avec son compteur) que voici :
    <textarea name="desc1" maxlength="300" onKeyPress="fUpdCompteur()" onKeyUp="fUpdCompteur()" rows="2" cols="31"></textarea><input type="text" name="compteur1" readonly="1" size="1"> caractères restants
    


    Mais moi j'aimerai appliquer un decompte a cinq textarea ayant des noms différents... j'ai donc eesayé de faire une boucle en JS mais ca marche po :
    var maximum = 300;
    	
    	for(var i=0; i<l; i++) {
    		function fUpdCompteur() {
    		var longueur = maximum - parseInt(document.formulaire.desc[i].value.length);
    		if (longueur <= 0){
    			document.formulaire.compteur[i].value = 0;
    			document.formulaire.desc[i].value = document.formulaire.desc[i].value.substring (0,maximum);
    		}
     		else
    			document.formulaire.compteur[i].value = longueur;
    		}
    	}
    


    Bien entendu, sur chaque textarea (et compteur), j'ai modifié le "name" en incrémentant de 1... donc le probleme ne vient pas du Html ^^ mais du JS, c'est déja un bon début :p

    Comment faire ? Merci ;)
    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2009 à 19:05:46

      Dis-donc Lost17, je trouve que tu as tendance à récupérer beaucoup de scripts sur le net que tu ne parviens ensuite pas à modifier à ta sauce...

      Il est grand temps d'apprendre le JS. >_<


      Une solution pour toi serait, je pense, de passer en paramètre de ta fonction d'origine (pas ton bidouillage avec la boucle :-° ) l'objet textarea et l'objet compteur ciblés.

      function fUpdCompteur(obj_txt,obj_cpt) {
        var longueur = maximum - parseInt(txt.value.length);
        if (longueur <= 0){
          obj_cpt.value = 0;
          obj_txt.value = obj_txt.value.substring (0,maximum);
        } else {
          obj_cpt.value = longueur;
        }
      }
      




      Avec le HTML :

      <textarea name="desc1" maxlength="300" onkeypress="fUpdCompteur(this,document.getElementById('compteur1'));" onkeyup="fUpdCompteur(this,document.getElementById('compteur1'));" rows="2" cols="31"></textarea>
      <!-- J'ai mis un ID au compteur, pour pouvoir passer l'objet en param -->
      <input id="compteur1" type="text" name="compteur1" readonly="1" size="1" />
       caractères restants
      




      Et enfin, est-ce vraiment nécessaire de mettre onkeypress ET onkeyup ??? o_O
      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2009 à 19:52:07

        Ca ne fonctionne pas plus...

        Citation : Golmote

        est-ce vraiment nécessaire de mettre onkeypress ET onkeyup


        Alors là, j'en ai aucune idée... c'était dans le script... :honte: je vais en enlever un pour voir...

        Citation : Golmote

        Dis-donc Lost17, je trouve que tu as tendance à récupérer beaucoup de scripts sur le net que tu ne parviens ensuite pas à modifier à ta sauce...


        Et moi je trouve que tu as tendance a m'aider (et tant mieux :D ).
        Plus sérieusement, oui tu as raison... j'hésitais depuis un bout de temps mais j'en ai de plus en plus besoin... t'aurais pas un tuto à me conseiller ?? ^^

        J'aimerai quand meme qu'on résolve mon problème pour cette fois-ci :p

        • Partager sur Facebook
        • Partager sur Twitter
          26 avril 2009 à 20:30:14

          @golmote : Il sort d'où maximum dans ta fonction ?
          • Partager sur Facebook
          • Partager sur Twitter
            26 avril 2009 à 20:33:13

            @xavier, je n'ai repris que la fonction moi ! ^^ La variable maximum est globale, définie avant la fonction dans le premier post du topic ;)

            Il faut bien entendu laisser la variable maximum, et corriger la petite erreur d'inattention que j'ai faite ligne 2... >_<

            var maximum = 300;
            function fUpdCompteur(obj_txt,obj_cpt) {
              var longueur = maximum - parseInt(obj_txt.value.length);
              if (longueur <= 0){
                obj_cpt.value = 0;
                obj_txt.value = obj_txt.value.substring (0,maximum);
              } else {
                obj_cpt.value = longueur;
              }
            }
            





            Un tuto ? Euh..... à tout hasard... Tadaa (tu aurais pu chercher...)
            • Partager sur Facebook
            • Partager sur Twitter
              26 avril 2009 à 20:49:06

              C'est parfait ! Merci.

              C'est promis, d'ici quelques temps je me mets au JS :D
              • Partager sur Facebook
              • Partager sur Twitter

              Script decompte caracteres

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown