Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire Cours JavaScript, FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 28/06/2009, 20h45   #1 (permalink)
Membre à l'essai
 
Date d'inscription: mai 2007
Messages: 49
Par défaut compteur de caractère pour 5 textaera

Bonjour,

J'ai un compteur qui marche trés bien pour un textaera mais impssible de le faire fonctionner mêmepas pour 2
Code :
 
<!--
 
var max=300;
 
 
function compter(f) {
	var txt=f.Formation.value;
	var nb=txt.length;
	if (nb>max) {
                 nb=nb-1;
		alert("Pas plus de "+max+" caractères dans ce champ");
 
		f.Formation.value=txt.substring(0,max);
 
	}
 f.nbcar.value=max-nb;
}
 
function timer() {
	compter(document.forms["Form"]);
	setTimeout("timer()",100);
 
}
//-->
 
 

le html

Code :
 
 
<p align="left">Message&nbsp; de 300 caract&egrave;res maxi. Sur 10 lignes. Il reste <input type="text" class="formulaire" name="nbcar" size=3/>&nbsp;
caract&egrave;res.<br />
&nbsp;&nbsp; 
<textarea rows="7" class="formulaire" name="message" cols="52"  onkeydowm="compter(this.form)" ></textarea>
</p>
 
 

Auriez vous une idée ou un script qui puisse compter les caractères sur plusieurs textaera.

Merci pour vos réponses.
anca2 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 09h09   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Date d'inscription: mars 2002
Localisation: Au coeur de la Nébuleuse de la Rainette
Messages: 22 589
Par défaut

oui les timers s'embrouillent...
il faudrait faire une nouvelles instance de fonction timer pour chaque textarea ...

Code :
function timer() {
       tabText=document.forms["Form"].getElementsByTagName('textarea');
       tabTimer=new Array(); 
        i=0;
        while(tabText[i]){
         new compter(tabText[i]);
	 tabTimer[i]=setTimeout("timer()",100);
         i++;
         }
 
}
 
__________________
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
Citation:
Deux règles du succès:
1) Ne communiquez jamais à quelqu'un tout votre savoir...

Votre post a trouvé une réponse qui vous satisfait ? Alors n'oubliez pas le Tag

réalisations web (developpeur et/ou infographiste et/ou chef de projet:
www.saftair.com| www.ouestisol.fr | www.sebemex.fr
| www.sistac-alizay.fr | www.planet-languages.com | www.acoustishop.fr | www.litt.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 09h36   #3 (permalink)
Membre émérite
 
Avatar de RomainVALERI
 
Date d'inscription: avril 2008
Localisation: Nancy (54)
Âge: 33
Messages: 979
Par défaut

Ce n'est probablement pas la cause de ton problème mais il y a une petite faute de frappe ici :
Citation:
Envoyé par anca2 Voir le message
Code :
<textarea rows="7" class="formulaire" name="message" cols="52"  onkeydowm="compter(this.form)" ></textarea>
__________________
Pour ceux qui s'ennuient ou qui ont envie de se changer les idées :
>>> essayez mon générateur de phrases aléatoires (attention : version IE/Opera non encore opérationnelle, utilisez un autre navigateur (FF, GoogleChrome, Safari, etc.) s'il vous plaît )

(un peu plus de (4.8 x 10 puissance 74) phrases possibles actuellement )

---
>>> ou entrez dans la spirale des labyrinthes... ^^ (duels entre joueurs, avec éditeur de labyrinthes intégré et moteur 3D très propre)(pour vous mesurer à moi, cherchez : "toshir0")
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 20h36   #4 (permalink)
Membre à l'essai
 
Date d'inscription: mai 2007
Messages: 49
Par défaut

Bonsoir SpaceFrog , Romain,

merci pour vos réponses

En effet SpaceFrog, les timer s'en mêlent ton script fonctionne mais la mise en place est lourde pour la fonction comptage il faut faire une fonction pour chaque textaera .
J'ai trouver par hasard un script sur www.javascriptfr.com qui fonctionne et dont la mise en place est simple.
J'ai ajouté un "limitateur" de ligne (je ne sais plus où je l'ai trouvé, désolé).

Ci-dessous le code complet, la mise en place pour plusieurs textaera et facile.
Il manque l'affichage du nombre de lignes restant, si vous avez une idée comment faire merci de faire partager le savoir.

Code :
 
<html> 
<head> 
<title>Limiter un textarea</title> 
     
<style type="text/css"> 
/* Style pour le textarea */ 
textarea.limiter 
{ 
	width: 610px; 
	font-size: 10px; 
	font-family: Verdana, sans-serif; 
} 
/* style pour le case de décompte de caractères possible à saisir */ 
div.decompte 
{ 
	width: 30px; 
	position: absolute; 
	border: 1px solid #FF0000; 
	font-size: 10px; 
	font-family: Verdana, sans-serif; 
} 
</style> 
         
<script language="Javascript" type="text/javascript"> 
// args : string moncontroletexte, int nbcar, string moncontroledecompte 
// return : aucun 
// Affecte à certains évènements d'un textarea, le contrôle de la longueur de son contenu 
 
 
 function compter_ligne( event, zoneSaisie, ligMax )
   {  if ( event.keyCode==13 || event.which==13 )
      {
	  if (navigator.appName=="Netscape")
  {var nl="\n"; }
else if (navigator.appName=="Microsoft Internet Explorer")
 {var nl="\r";}
 
         if ( zoneSaisie.value.split(nl).length>=ligMax )
         {  event.returnValue=false;
            return false;
         }
      }
      return true;
   }
 
 
 
 
function LimiterTextArea(nom_controletexte, nbcar, nom_controledecompte) 
{ 
	var moncontroletexte = document.getElementById(nom_controletexte);
	var moncontroledecompte = document.getElementById(nom_controledecompte);
	if (moncontroletexte && moncontroledecompte)
	{
		moncontroletexte.onclick = function(){TextAreaEstRempli(moncontroletexte, nbcar, moncontroledecompte)}; 
		moncontroletexte.onblur = function(){TextAreaEstRempli(moncontroletexte, nbcar, moncontroledecompte)}; 
		moncontroletexte.onkeyup = function(){TextAreaEstRempli(moncontroletexte, nbcar, moncontroledecompte)}; 
		moncontroletexte.onkeypress = function(){TextAreaEstRempli(moncontroletexte, nbcar, moncontroledecompte)}; 
		// *** Affichage du nombre de caractères restant 
		if(moncontroledecompte.type)
			moncontroledecompte.value = NbCarRestant(moncontroletexte, nbcar);			// Pour un input de formulaire		
		else
			moncontroledecompte.innerHTML = NbCarRestant(moncontroletexte, nbcar);	// Pour un élément HTML	
	}
} 
// TextAreaEstRempli 
// args : textarea moncontroletexte, int nbcar, element_HTML moncontroledecompte 
// return : bool 
// Renvoie vrai si le nombre de caractères maximum du textarea n'est pas atteint 
function TextAreaEstRempli(moncontroletexte, nbcar, moncontroledecompte) 
{ 
	if (moncontroletexte) 
	{ 
		if (moncontroletexte.value.length <= nbcar) 
		{ 
			//alert("pas rempli"); 
			// mes actions ... 
			// *** Affichage du nombre de caractères restant
			if(moncontroledecompte.type)
				moncontroledecompte.value = NbCarRestant(moncontroletexte, nbcar);
			else
				moncontroledecompte.innerHTML = NbCarRestant(moncontroletexte, nbcar);
			return true; 
		} 
		else 
		{ 
			//alert("rempli"); 
			// mes actions ... 
			// Affichage du nombre de caractères restant 
			moncontroletexte.value = moncontroletexte.value.substr(0, nbcar); 
			// *** Affichage du nombre de caractères restant
			if(moncontroledecompte.type)
				moncontroledecompte.value = NbCarRestant(moncontroletexte, nbcar);
			else
				moncontroledecompte.innerHTML = NbCarRestant(moncontroletexte, nbcar);
				
			return false; 
		} 
	} 
} 
// NbCarRestant 
// args : textarea moncontroletexte, int nbcar 
// return : int 
// Renvoie le nombre de caractère à saisir 
function NbCarRestant(moncontroletexte, nbcar) 
{ 
	if (moncontroletexte.value.length)
		return new Number(nbcar - moncontroletexte.value.length); 
	else
		return new Number(nbcar);
} 
</script> 
</head> 
   
<body> 
	<form name="Form" action="Limiter.htm" method="POST">
	  <textarea id="commentaire" onKeyDown="return(compter_ligne( event, this, 10))" name="commentaire" class="limiter"></textarea> <br>
		
		<!-- Avec un INPUT de formulaire 
		<input type="text" id="controle_decompte" name="controle_decompte" value="">-->
		<!-- Ou avec un DIV -->
		<div id="controle_decompte" name="controle_decompte" class="decompte"></div>
		<script language="Javascript" type="text/javascript"> 
			LimiterTextArea('commentaire', 30, 'controle_decompte'); 
		</script> 
		
		<br/><textarea id="commentaire_2"  onKeyDown="return(compter_ligne( event, this, 12))" name="commentaire_2" class="limiter"></textarea><br> 
		
		<!-- Avec un INPUT de formulaire -->
		<!--<input type="text" id="controle_decompte" name="controle_decompte" value="">-->
		<!-- Ou avec un DIV -->
		<div id="controle_decompte_2" name="controle_decompte_2" class="decompte"></div>
	
		<script language="Javascript" type="text/javascript"> 
			LimiterTextArea('commentaire_2', 40, 'controle_decompte_2'); 
		</script> 
		
		
		
		
		<br><br><input type="reset" id="annuler" name="annuler" value="Annuler" />
	</form>
	
http://www.javascriptfr.com/codes/LIMITER-NOMBRE-CARACTERE-DANS-TEXTAREA-NOUVELLE-VERSION_34251.aspx	 
</body> 
</html>
 
 
anca2 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS JAVASCRIPTF.A.Q JSTUTORIELS JSSOURCES JSLIVRES JS

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 20h26.


Vos questions techniques : forum d'entraide JavaScript - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.