129 votes

Compter les caractères dans textarea

Je veux compter les caractères dans une textarea, alors je viens de faire:

 <textarea id="field" onkeyup="countChar(this)"></textarea>

function countChar(val){
     var len = val.value.length;
     if (len >= 500) {
              val.value = val.value.substring(0, 500);
     } else {
              $('#charNum').text(500 - len);
     }
};
 

Quel est le problème avec mon morceau de code? Ça ne marche pas! Eh bien, c'était une écriture pour les débutants, besoin d'aide.

184voto

Caterham Points 883

Quelles erreurs voyez-vous dans le navigateur? Je peux comprendre pourquoi votre code ne fonctionne pas si ce que vous avez posté était incomplet, mais sans savoir que je ne peux pas le savoir avec certitude.

 <!DOCTYPE html>
<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.5.js"></script>
    <script>
      function countChar(val) {
        var len = val.value.length;
        if (len >= 500) {
          val.value = val.value.substring(0, 500);
        } else {
          $('#charNum').text(500 - len);
        }
      };
    </script>
  </head>

  <body>
    <textarea id="field" onkeyup="countChar(this)"></textarea>
    <div id="charNum"></div>
  </body>

</html>
 

... fonctionne bien pour moi.

Edit: Vous devriez probablement effacer le div de charNum ou écrire quelque chose s’ils dépassent la limite.

87voto

keithics Points 1155

Version améliorée basée sur la fonction de Caterham :

 $('#field').keyup(function () {
  var max = 500;
  var len = $(this).val().length;
  if (len >= max) {
    $('#charNum').text(' you have reached the limit');
  } else {
    var char = max - len;
    $('#charNum').text(char + ' characters left');
  }
});
 

11voto

humugus Points 51

Exemple HTML, utilisé partout où j'ai besoin d'un compteur, remarquez la pertinence des ID de textarea et de la deuxième plage: id="post" <-> id="rem_post" et le titre de la plage qui contient le nombre de caractères souhaité. de chaque textarea particulier

 <textarea class="countit" name="post" id="post"></textarea>
<p>
  <span>characters remaining: <span id="rem_post" title="1000"></span></span>
</p>
 

La fonction JavaScript, généralement placée avant </body> dans mon fichier de modèle, nécessite jQuery

 $(".countit").keyup(function () {
  var cmax = $("#rem_" + $(this).attr("id")).attr("title");

  if ($(this).val().length >= cmax) {
    $(this).val($(this).val().substr(0, cmax));
  }

  $("#rem_" + $(this).attr("id")).text(cmax - $(this).val().length);

});
 

9voto

fatsouls32 Points 61

CA marchait bien pour moi.

 $('#customText').on('keyup', function(event) {
   var len = $(this).val().length;
   if (len >= 40) {
      $(this).val($(this).val().substring(0, len-1));
   }
});
 

7voto

mattsven Points 9086

substring() doit devenir substr() .

Exemple: jsfiddle.net/xqyWV

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X