Limiter Caractères Textarea

Signaler
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour tout le monde, je cherche a limiter le nombre de caractères dans un textarea.


J'ai trouvé cette fonction que j'utilise sous FF très bien et je viens
de la tester sous IE et je me rend compte quelle n'affiche pas de
résultat. Voici la fct :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

// 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 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);
 
returntrue;
}
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);

returnfalse;
}
}
}
 
// NbCarRestant
// args : textarea moncontroletexte, int nbcar
// return : int
// Renvoie le nombre de caractère à saisir
function NbCarRestant(moncontroletexte, nbcar)
{
if(moncontroletexte.value.length)
returnnew Number(nbcar - moncontroletexte.value.length) + " caractères restants";
else
returnnew Number(nbcar) + " caractères restants";
}

<!-- END TEMPLATE: bbcode_code -->

Auriez vous une idée ?


Merci de votre aide

6 réponses

Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Je n'ai pas testé ta fonction car je la trouve un peu longue pour ce que tu veux faire.

Personellement je ferais plutôt quelque chose dans ce style :

<script>
function limite(texte)
{
   if (texte.length >10){

    document.getElementById('contenu').value = texte.substr(0,10);
   }
}

</script>

<textarea id="contenu" rows="15" cols="80" onKeypress="javascript: limite(this.value);">
</textarea>
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Tu peut meme appliquer un onKeyup à la place du onKeypress. Je trouve cela plus beau mais cela reste personnel

Normalement, cela devrait être compatible FF,IE,Opera, mais il faut savoir que du javascript n'est pas fiable à 100%. C'est assez facile de passer outre les verifications javascript donc n'oublie pas de refaire une vérification en PHP/ASP si tu doit le stocker dans une base de donnée par la suite.

Bonne journée
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Oui, et comment je fais pour afficher un décompte du nombre de caractères qu'il nous reste à saisir ???

Merci
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
caractere_restant = ta_limite - texte.length

Apres je ne sais pas comment tu veut l'afficher.
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Je souhaite l'afficher sous mon textarea !!!
xxx caractères restants
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
B
onjour...
décidément les TEXTAREA sont à la mode ;O)

tu peux l'écrire dans un input type text

avec un test comme l'indique lesdis :
//----------------------------
function limite( this_,  max_){
  var Longueur = this_.value.length;

  if ( Longueur > max_){
    this_.value = this_.value.substring( 0, max_);
    Longueur = max_;
   }
  document.getElementById('reste').value = max_ - Longueur;
}
et avec un appel du type
<TEXTAREA ID='T_MESS' NAME='T_MESS' COLS="40" ROWS="5" onkeyup="limite( this,  10);" >Bonjour</TEXTAREA>

cela peut bien sur également se mettre dans un DIV c'est au choix, mais la il faut utiliser
document.getElementById('reste').innerHTML = (max_ - Longueur) +"caractères restant";  // par exemple

;0)