Accueil > > > CONTRÔLE DU NOMBRE DE CARACTÈRES DANS UN CHAMPS TEXTAREA
CONTRÔLE DU NOMBRE DE CARACTÈRES DANS UN CHAMPS TEXTAREA
Information sur la source
Description
Nouvelle version beaucoup plus performante que l'ancienne. La mise en place de la demande de contrôle d'un textarea ne se fait plus du tout de la même manière. /*Compatible avec firefox et IE*/ Avant, il fallait mettre les attibuts onkeypress, etc... directement dans le textarea concerné, mais celà alourdissait le code et ne simplifiait pas les choses en cas de modifs. Maintenant, c'est l'objet document qui est détourné et ensuite, quand nous sommes dans la procédure de contrôle, on vérifie que la cible est bien à contrôler (cf. function verif_textarea_length()). Sinon, on sort directement. Tout se passe dans le <TEXTAREA>: <TEXTAREA id="rappel" rows="4" cols="80" maxlength="200" control_length="1" id_control_cell="counter"></TEXTAREA> En fait, chose que je ne savait il y a 3 ans, c'est que l'on peut mettre des attributs personnalisés sur les éléments HTML. C'est super pratique pour passer des arguments d'appels à une procédure. Ici, je renseigne la l'attribut maxlength qui represente la taille maxi et qui sera traitée dans le script. l'attribut control_length est un booléen qui set a savoir si l'on veux controler ou pas sa taille. Celà peut par exemple être utilise si dans un cas vous voulez inicialement mettre un contrôl de taille sur le champs puis l'enlever en cour de route, il suffira juste de changer la valeur de l'attibut de 1 à 0. L'attribut id_cell_control est la valeur de l'attibut 'id' de la div de control ou va apparaître la taille du texte: <div id="counter" style="display:inline">0</div>/ 200 max. Merci.
Source
- <head>
- <script type="text/javascript">
-
- //Nicolas LE DREFF 2009
- //Version 2
- //ce code est visible à l'adresse suivante:
- //http://www.javascriptfr.com/code.aspx?ID=38494
-
- // cette fonction est appelée à chaque fois que l'on tape sur une touche (onkeypress,onkeyup), que l'on quite un champ(onblur).
- // l'aiguillage se fait à l'intérieur.
- // A savoir: si l'élément d'éclencheur de l'évenemment a un attibut nomé 'control_length' et qu'il est mis à 1, alors on traite l'évenement,
- // sinon, on passe la main
- function verif_textarea_length(e)
- {
- var target = e.target || e.srcElement; // récupération de la cible
- var is_something_wrong = false; // initialisation variable
-
- if ((target.attributes) && (target.attributes['control_length']) && (target.attributes['control_length'].value = '1')) // 'control_length'?
- {
- max = target.attributes['maxlength'].value; //récupération de la valeur maxlength de la cible
- id_textarea = target.attributes['id'].value; //récupération de la valeur id de la cible
- id_control_cell = target.attributes['id_control_cell'].value; //récupération de la valeur id de la div pour le compteur
-
- textarea = document.getElementById(id_textarea); //assignation du textarea dans un objet plus accessible
- if (textarea.value.length > max) //est-ce que la taille du texte est trop grande?
- {
- //oui, on affiche un message et on découpe ce qui traine après la limite
- alert('Vous ne pouvez rentrer que '+ max +' caractères maximum pour ce champs');
- textarea.value=textarea.value.substring(0,max);
- is_something_wrong = true; // on prévient à la sortie que qque chose ne s'est pas bien passé
- }
- show_counter_value(id_control_cell,textarea.value.length); //on affiche la taille du texte
- }
- return (!is_something_wrong); //retour à l'envoyeur
- }
-
- // affiche le nombre de caractères du textarea
- //rien de bien compliqué
- function show_counter_value(id_control_cell,counter_value)
- {
- control_cell_div = document.getElementById(id_control_cell);
- control_cell_div.innerHTML = counter_value ; // on met à jour le champs de contrôle.
- return true;
- }
-
- //mise en place des gachettes (triggers en anglais)
- function set_callback_events()
- {
- if (document.addEventListener){
- // alert('FF');
- document.addEventListener('keypress', verif_textarea_length, false);
- document.addEventListener('keyup', verif_textarea_length, false);
- document.addEventListener('blur', verif_textarea_length, false);
- } else if (document.attachEvent){
- // alert('IE');
- document.attachEvent('onkeypress', verif_textarea_length);
- document.attachEvent('onkeyup', verif_textarea_length);
- document.attachEvent('onblur', verif_textarea_length);
- }
- }
-
- </script>
-
- </head>
- <body onload="set_callback_events()">
- <form name="text" method="POST" action="">
- <span class="BlancLarge">Début de votre texte : </span><br>
- <TEXTAREA id="rappel" rows="4" cols="80" maxlength="200" control_length="1" id_control_cell="counter"></TEXTAREA><br>
- <span class="VertSmall">Nombre de caractères de ce champs : <div id="counter" style="display:inline">0</div>/ 200 max.</span><br><br>
- <input type="hidden" name="mode" value="submit"><br>
- <span class="BlancMedium">Pour valider et enregistrer votre texte : </span><input type="submit" value="Cliquez ici">
- </form>
- </body>
<head>
<script type="text/javascript">
//Nicolas LE DREFF 2009
//Version 2
//ce code est visible à l'adresse suivante:
//http://www.javascriptfr.com/code.aspx?ID=38494
// cette fonction est appelée à chaque fois que l'on tape sur une touche (onkeypress,onkeyup), que l'on quite un champ(onblur).
// l'aiguillage se fait à l'intérieur.
// A savoir: si l'élément d'éclencheur de l'évenemment a un attibut nomé 'control_length' et qu'il est mis à 1, alors on traite l'évenement,
// sinon, on passe la main
function verif_textarea_length(e)
{
var target = e.target || e.srcElement; // récupération de la cible
var is_something_wrong = false; // initialisation variable
if ((target.attributes) && (target.attributes['control_length']) && (target.attributes['control_length'].value = '1')) // 'control_length'?
{
max = target.attributes['maxlength'].value; //récupération de la valeur maxlength de la cible
id_textarea = target.attributes['id'].value; //récupération de la valeur id de la cible
id_control_cell = target.attributes['id_control_cell'].value; //récupération de la valeur id de la div pour le compteur
textarea = document.getElementById(id_textarea); //assignation du textarea dans un objet plus accessible
if (textarea.value.length > max) //est-ce que la taille du texte est trop grande?
{
//oui, on affiche un message et on découpe ce qui traine après la limite
alert('Vous ne pouvez rentrer que '+ max +' caractères maximum pour ce champs');
textarea.value=textarea.value.substring(0,max);
is_something_wrong = true; // on prévient à la sortie que qque chose ne s'est pas bien passé
}
show_counter_value(id_control_cell,textarea.value.length); //on affiche la taille du texte
}
return (!is_something_wrong); //retour à l'envoyeur
}
// affiche le nombre de caractères du textarea
//rien de bien compliqué
function show_counter_value(id_control_cell,counter_value)
{
control_cell_div = document.getElementById(id_control_cell);
control_cell_div.innerHTML = counter_value ; // on met à jour le champs de contrôle.
return true;
}
//mise en place des gachettes (triggers en anglais)
function set_callback_events()
{
if (document.addEventListener){
// alert('FF');
document.addEventListener('keypress', verif_textarea_length, false);
document.addEventListener('keyup', verif_textarea_length, false);
document.addEventListener('blur', verif_textarea_length, false);
} else if (document.attachEvent){
// alert('IE');
document.attachEvent('onkeypress', verif_textarea_length);
document.attachEvent('onkeyup', verif_textarea_length);
document.attachEvent('onblur', verif_textarea_length);
}
}
</script>
</head>
<body onload="set_callback_events()">
<form name="text" method="POST" action="">
<span class="BlancLarge">Début de votre texte : </span><br>
<TEXTAREA id="rappel" rows="4" cols="80" maxlength="200" control_length="1" id_control_cell="counter"></TEXTAREA><br>
<span class="VertSmall">Nombre de caractères de ce champs : <div id="counter" style="display:inline">0</div>/ 200 max.</span><br><br>
<input type="hidden" name="mode" value="submit"><br>
<span class="BlancMedium">Pour valider et enregistrer votre texte : </span><input type="submit" value="Cliquez ici">
</form>
</body>
Conclusion
Je pense qu'avec cette nouvelle version, je rends plus ouvert l'intégration du script dans d'autres application. J'ai aussi trouvé d'autre solution sur le net, mais j'aime bien la mienne :D
Historique
- 09 juillet 2006 01:51:50 :
- Changement de la capture d'écran
- 09 juillet 2006 02:02:16 :
- J'avais oublié un double-quote pour un commentaire
- 24 janvier 2009 18:52:45 :
- Changement radical de façon d'apréhender les choses.
Epuration du code et simplification de la mise en place de la demande de contrôle
Support FF et IE
- 24 janvier 2009 18:56:52 :
- Mise à jour de la capture
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
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
test [ par alcatraz ]
Bonjour a tous,petite question au sujet du javascript.J'ai un formulaire de saisie de données avec plusieurs champs du type textarea.Je voudrais teste
URGENT: position du curseur dans un TEXTAREA ??? [ par Kiom ]
Bonjour tout le monde,bon voilà une petite question :est-il possible en javascript de connaître la position du curseur dans un textarea ?....une répon
Compter le nombre de caractère [ par Titrax ]
Salut quelqu'un aurait la méthode pour compter le nombre de caractère (en temps reel) que l'on met dans un textarea. MErci d'avance.
Ecrire l'heure dans une textarea [ par c0nquer ]
::.. SqualL Pow4 ..:: www.SqualLv3x.fr.st <- My siteBonjour a tous , je voudrais savoir si il est possible de mettre l'heure en temps réel dans une
comment écrire dans un textarea ?? [ par moudj ]
Bonjour,je ne sais pas si c'est possible mais voilà ce que je veux faire.pendant qu'on saisi un texte dans un textarea, on veut, à un moement donné, à
Textarea = WYSIWYG éditeur HTML [ par Blasteur ]
Bonjour à tous !Je recherche un javascript qui soit intégrable dans un formulaire de la même manière qu'une textarea. Ce script est en fait un éditeur
textarea = WYSIWYG éditeur HTML [ par Blasteur ]
Bonjour à tous !Je recherche un javascript qui soit intégrable dans un formulaire de la même manière qu'une textarea. Ce script est en fait un éditeur
Bloquer un textarea [ par hicksman ]
Salut!je voudrais bloquer ( en disabled ou readonly) un textarea en cliquant sur un bouton radio. sans recharger la page.Quelle est la méthode à utili
Insérer un fichier dans un textarea [ par CyberB ]
Bonjour,J'ai chercher et rechercher partout et je n'ai pas trouvé null part une façon d'afficher dans mon texarea le contenu d'un fichier .txtEst-ce q
|
Derniers Blogs
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 TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
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
|