Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les 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
Futur Membre du Club
 
Inscription : mai 2007
Messages : 82
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 82
Points : 19
Points : 19
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<!--
 
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 :
1
2
3
4
5
6
7
 
 
<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 00
Vieux 29/06/2009, 09h09   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 29 074
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 29 074
Points : 43 300
Points : 43 300
oui les timers s'embrouillent...
il faudrait faire une nouvelles instance de fonction timer pour chaque textarea ...

Code :
1
2
3
4
5
6
7
8
9
10
11
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++;
         }
 
}
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 09h36   #3
Expert Confirmé
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 500
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 500
Points : 3 953
Points : 3 953
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 :
>>> beta-test : générateur de phrases aléatoires (+ le générateur de sondages !)
>>> et pour les amateurs de labyrinthes...
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 20h36   #4
Futur Membre du Club
 
Inscription : mai 2007
Messages : 82
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 82
Points : 19
Points : 19
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 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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
 
<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>
 
 
</body> 
</html>

Dernière modification par Sendusha ; 06/06/2011 à 18h00.
anca2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 11h29.


 
 
 
 
Partenaires

Hébergement Web