IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Limiter le nombre de caractère sur un TextBox avec textmode multiline


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut Limiter le nombre de caractère sur un TextBox avec textmode multiline
    Bonjour,

    J'ai pu voir (et tester par moi même) que la propriété maxlenght ne fonctionne pas sur les textbox lorsque la propriété "MultiLine" est activée.

    J'ai essayé d'utiliser une fonction en javascript, mais je suis un dans user control, et il ne trouve pas ma textbox.
    En C#, il y a la methode ontextchanged, mais il faut que l'utilisateur clique en dehors du textbox pr lancer la fonction.

    Est-ce qu'il y a un moyen de bloquer les entrées utilisateur dès que le nombre max de caractère est dépassé ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Par défaut
    J'ai eu le même problème.

    Alors du coup j'affiche dans un label le nombre de caractère(onTextChance) et j'empeche la validation si le nombre de caractère est supérieure a 160(dans mon cas)

    Par contre le onTextChange il se met a jours que quand on clique en dehors du textBox, donc c'est pas super pratique, mais il doit y avoir moyens de le rafraichir a chaque lettre entré, mais en javascript sans doute.

  3. #3
    Membre confirmé
    Profil pro
    azeazeae
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : azeazeae

    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Par défaut
    Regarde du cote de javascript...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
        <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>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Par défaut
    Pour récuperer l'ID de ton textbox, qui te seras util pour le javascript il faut utiliser la propriété ClientID de ton textbox.

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Sans chercher à déterrer des vieux truc, j'ai le même problème, j'ai apporter la même solution et ça ne fonctionne pas.

    Peut-être suis je passé à côté d'un truc où le script proposé ne fonctionne pas avec du .NET

    Une idée pour arriver à cela ?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Faut faire ça en javascript (et bien sûr controler côté serveur après )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Twig] Limiter le nombre de caractères sur une variable
    Par ch0c4 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/02/2013, 17h09
  2. Réponses: 3
    Dernier message: 16/01/2013, 17h01
  3. [IP-2007] Limiter le nombre de caractères - Textbox
    Par barnet dans le forum InfoPath
    Réponses: 3
    Dernier message: 05/04/2012, 09h15
  4. TextBox : limiter le nombre de caractères sans MaxLength ?
    Par arnofly dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/03/2009, 16h42
  5. [JTextArea] limiter le nombre de caractères
    Par spoutyoyo dans le forum Composants
    Réponses: 5
    Dernier message: 14/09/2007, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo