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
Récupérer la position du curseur dans un TEXTAREA [ par piment ]
Comment récupérer la position du curseur dans un textarea ou la position en nombre de caractère depuis le début.Merci
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|