web-dev-qa-db-fra.com

comment limiter le nombre de caractères dans un traitement de champ textarea php?

J'utilise un champ textarea dans un formulaire qui est créé sur HTML et le traitement est effectué par php. Je souhaite limiter le nombre de caractères que l'utilisateur peut saisir dans la zone de texte. Y at-il un moyen par lequel cela peut être fait parce que le champ textarea est ensuite stocké dans une base de données mysql et donc je dois limiter les données utilisateur en fonction de la valeur varchar du champ.

De l'aide?

9
user1373168

Vous pouvez limiter cela en définissant l'attribut maxlength sur la balise textarea telle que <textarea maxlength="120"></textarea> en HTML et en plus "couper" la chaîne d'entrée dans la fonction PHP par substr().

18
s.webbandit

Comme mentionné par s.webbandit vous pouvez utiliser maxlength, mais notez qu'il s'agit d'une nouvelle fonctionnalité introduite en HTML5, sous la forme W3 Schools article sur <textarea>, de sorte que la solution "bulletproof" nécessite JavaScript. Donc, maxlength est pas pris en charge dans Internet Explorer jusqu’à la version 10 et pas du tout dans Opera.

Voici une approche qui utilise Javascript pour vous aider:

<script language="javascript" type="text/javascript">
   function charLimit(limitField, limitCount, limitNum) {
    if (limitField.value.length > limitNum) {
      limitField.value = limitField.value.substring(0, limitNum);
  } else {
      limitCount.value = limitNum - limitField.value.length;
       }
    }
</script>

Vous pouvez ensuite l'utiliser comme ceci ( source originale ):

    <textarea name="limitedtextarea" onKeyDown="charLimit(this.form.limitedtextarea,this.form.countdown,100);">
    </textarea>

Cela devrait vous aider.

9
toni_lehtimaki

C'est un moyen très simple de limiter la longueur d'une zone de texte via JavaScript.

zone de texte:

<input class='textField' type='text' NAME='note1' value='' onkeyup='charLimit(this, 40);'>

Fonction JavaScript:

function charLimit(limitField, limitNum) {
  if (limitField.value.length > limitNum) {
   limitField.value = limitField.value.substring(0, limitNum);}
}

Lorsque l'utilisateur tape plus de 40 caractères, il les supprime simplement. 

4
JoBaxter

J'ai essayé de nombreuses façons de limiter le texte dans textareas, et le meilleur que j'ai trouvé (côté client) est avec le plugin jQuery.Maxlength.js. Simple rapide et couvre tous!

Étape 1. Inclure le script du plugin Maxlength

<script language="javascript" src="jquery.maxlength.js"></script>

Étape 2. Ajouter l'attribut maxlength à 

<textarea maxlength="35" 
    rows="5" cols="30" name="address"></textarea>

Étape 3. Initialiser le plugin

<script type="text/javascript">
    $(document).ready(function($) {
             //Set maxlength of all the textarea (call plugin)
             $().maxlength();
    })
</script>

https://github.com/viralpatel/jquery.maxlength

1
jasonflaherty
<script type="text/javascript">
        $(document).ready(function(){
        var maxChars = $("#sessionNumtext");
        var max_length = maxChars.attr('maxlength');
        if (max_length > 0) {
            maxChars.bind('keyup', function(e){
                length = new Number(maxChars.val().length);
                counter = max_length-length;
                $("#sessionNum_counter").text(counter);
            });
        }
    });
</script>

<textarea name="sessionNumtext" id="sessionNumtext" maxlength="20" type="text"></textarea>
kalan karakter sayısı: <span id="sessionNum_counters">20</span>
0
ufuk