Accueil > > > LIMITER LE NOMBRE DE CARACTÈRE DANS UN TEXTAREA - NOUVELLE VERSION ?
LIMITER LE NOMBRE DE CARACTÈRE DANS UN TEXTAREA - NOUVELLE VERSION ?
Information sur la source
Description
Il s'agit en fait de faire ce qui existe déjà mais en rendant le code plus modulaire. Ici, il suffit de créer son contrôle et de lui affecter une fonction pour gérer la longueur du contenu sur plusieurs évènements On évite ainsi de répéter tous les évènements intérressants à chaque fois qu'on pose un textarea. C'est une première version alors si vous avez des remarques pour faire évoluer tout ça, je suis preneur ! Merci !
Source
- <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 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="frmPage" action="Limiter.htm" method="POST">
- <textarea id="commentaire" name="commentaire" class="limiter"></textarea>
-
- <!-- 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', 10, 'controle_decompte');
- </script>
- <input type="reset" id="annuler" name="annuler" value="Annuler" />
- </form>
- </body>
- </html>
<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 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="frmPage" action="Limiter.htm" method="POST">
<textarea id="commentaire" name="commentaire" class="limiter"></textarea>
<!-- 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', 10, 'controle_decompte');
</script>
<input type="reset" id="annuler" name="annuler" value="Annuler" />
</form>
</body>
</html>
Historique
- 29 octobre 2005 17:17:00 :
- Mise à jour en référence à la remarque de "Meduse" qui désirait un décompte du nombre de caractères restant à saisir.
C'est fait !
- 29 octobre 2005 17:26:33 :
- Manque de modularité = création de fonction
- 25 avril 2006 14:48:33 :
- Mise à jour en réponse à "krolineeeeeeee" qui voulais utiliser un contrôle RESET.
Donc, krolineeeeeeee, 2 solutions :
1/ Soit tu utilises un INPUT, et non plus un DIV, pour faire le décompte des caractères restant ainsi cet INPUT sera vidé avec les autres contrôles lors du reset
2/ soit tu continues avec un DIV mais tu devras coder sa remise à zéro
Dans les 2 cas, il faudrait compléter le reset du formulaire pour que soit affiché un nombre dans l'élement de décompte
Ca ce passerait à peu près comme ça : <form ... onReset="javascript: viderChamp('controle_decompte');" >
avec une fonction "viderChamp()" qui réécrirait le nombre original.
Teste le nouveau code source pour comprendre, c'est plus parlant
Sinon, la 2è mise à jour concerne le controle de décompte qui peut être soit un élément de mise en page HTML ou un controle de formulaire.
Voilà voilà !
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
simulateur de typo (police, font, caractere) [ par actesez ]
Bonjour, est il possible de creer un simulateur de police en java, ajax, ...? Je tape mon texte, choisi ma police = aperçu du resultat merci
Afficher / masquer (encore !?) [ par shumix ]
Bonjour à tous,Je pense avoir bien cherché dans le forum, mais je n'ai pas trouvé ce qu'il me faut (ou bien je n'ai pas su l'adapter à mes besoins, ét
Lecture fin de TextArea [ par fresk13 ]
Bonjour à tous. Voila, je travaille actuellement sur un projet en PHP. Lors de l'inscription d'un utilisateur, avant l'apparition du formulaire d'insc
controler un textarea et un champ de text [ par Medgueye ]
Bonjour à tous;je sollicite de l'aide;j'ai dans une page html, deux zones (Z1 et Z2) de texte (textarea) et un bouton de sorte que je saisis sur Z1 et
Validation de formulaire avec jQuery : problème textarea [ par Xaviou ]
Bonjour à tous. Je me suis récement mis au JavaScript, et plus précisément à jQuery. Je rencontre quelques soucis pour la validation d'un formulaire
Limiter la taille max d'une fenêtre [ par DK ONER ]
Bonjour je suis en train de réaliser mon site internet, je l'ai conçu, sous flash, de manière à ce qu'il fonctionnne pour toute les résolutions jus
un <br> dans un textarea [ par dolux64100 ]
Bonjour, Je ne suis pas sur d être dans le bon sujet désolé je n e sais pas trop ou poster ce message, En faite je cherche un code qui affiche dire
Textarea dans un tableau [ par YURIX ]
Bonjour, Je viens d' écrire une fonction basique en javascript qui permet de modifier un textarea : onClick='document.forms.products_description.val
Génerer un texte prédéfini dans un textarea à partir d'une balise type lien [ par incroayable ]
Bonjour à tous, J'ai -un lien : Pour générer un lien "cliquez ici" -Un textarea permettant de décrire un produit. J'aimerai que lorsque l'utilis
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|