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
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Magic
Entre 429€ et 429€
|