8796 sujets

Développement web côté serveur, CMS

Bonjour,
Sur un formulaire j'ai 2 textarea, un dont la valeur est de 50 à 200 caractères et l'autre de 400 à 999 carcatères.
Seulement un checklend écrase l'autre, l'association des deux semble impossible.
Voici le JS :
<script type="text/javascript">
   function CheckLen(Target) 
   { 
      var StrLen = Target.value.length; 
      var CharsLeft = 900; 
      var CharsMust = 400; 
      if ( StrLen>900 ) { 
         Target.value = Target.value.substring(0,900); 
         CharsLeft = 0; 
         CharsMust = 0; 
      } else { 
         CharsLeft = (CharsLeft - StrLen); 
         CharsMust = (StrLen<CharsMust) ? (CharsMust - StrLen) : 0; 
      } 
      document.form2submit.reste.value = CharsLeft; 
      document.form2submit.oblige.value = CharsMust; 
   }
 </script>
<script type="text/javascript">
   function CheckLen(Tar) 
   { 
      var StrLen = Tar.value.length; 
      var CharsLeft = 200; 
      var CharsMust = 50; 
      if ( StrLen>900 ) { 
         Tar.value = Tar.value.substring(0,200); 
         CharsLeft = 0; 
         CharsMust = 0; 
      } else { 
         CharsLeft = (CharsLeft - StrLen); 
         CharsMust = (StrLen<CharsMust) ? (CharsMust - StrLen) : 0; 
      } 
      document.form2submit.restecourt.value = CharsLeft; 
      document.form2submit.obligecourt.value = CharsMust; 
   }
 </script>


Et le code php pour l'un :

         <textarea name="description_c" cols=50 rows=5 class="descr_add_site_annuaire" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)"><?php echo $description_c ?></textarea>
		 <br />
Il vous reste <input type=text name=restecourt> caractères dont encore <input type=text name=obligecourt>  obligatoires.


Puis pour l'autre :

         <textarea name="description" cols=50 rows=5 class="descr_add_site_annuaire" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)"><?php echo $description ?></textarea>
		 <br />
Il vous reste <input type=text name=reste> caractères dont encore <input type=text name=oblige>  obligatoires.


Merci
Modifié par renard11 (22 Feb 2011 - 10:49)
C'est une question Javascript, tu devrais demander à un modérateur de déplacer ton sujet dans la bonne section.
Salut,

tu déclares deux fois ta fonction CheckLen() au sein de ta page. La seconde déclaration "écrase" donc la première, et ce sont ses propriétés qui sont utilisées dans à chaque appel. Deux solutions :
- créer deux fonctions ChekLen200() et CheckLen900() par ex (par terrible vu la redondance du code)
- améliorer la fonction existante, du type : CheckLen(elmt, minChars, maxChars) ... Beaucoup mieux, tu évites de répéter ton code Smiley smile

Je te laisse faire ton choix ...