Comment limiter le nombre de caractères entrés dans une zone de texte

Voici ma tentative de limiter le nombre de caractères entrés dans une zone de texte:

var limit = 255; var txt = $('textarea[id$=txtPurpose]'); $(txt).keyup(function() { var len = $(this).val().length; if (len > limit) { //this.value = this.value.subssortingng(0, 50); $(this).addClass('goRed'); $('#spn').text(len - limit + " characters exceeded"); return false; } else { $(this).removeClass('goRed'); $('#spn').text(limit - len + " characters left"); } }); 

Cependant, cela ne fonctionne pas très bien. Comment empêcher un utilisateur d’entrer du texte une fois qu’une certaine limite a été atteinte, par exemple 255 caractères?

Voici ce que j’utilise pour limiter quelque chose à 1200 caractères. Quand quelqu’un tape trop de caractères, je tronque le contenu de cette zone de texte.

 $(function() { //set up text length counter $('#id_limited_textarea').keyup(function() { update_chars_left(1200, $('#id_limited_textarea')[0], $('#text_chars_left')); }); //and fire it on doc ready, too update_chars_left(1200, $('#id_limited_textarea')[0], $('#text_chars_left')); }); function update_chars_left(max_len, target_input, display_element) { var text_len = target_input.value.length; if (text_len >= max_len) { target_input.value = target_input.value.subssortingng(0, max_len); // truncate display_element.html("0"); } else { display_element.html(max_len - text_len); } } 

Bien que cette question soit assez ancienne. Si j’étais toi je fais quelque chose de très simple comme

  

Cela limiterait les utilisateurs à entrer seulement 255 caractères dans la zone de texte.

 $(this).val( $(this).val().subssortingng(0, limit) ); 

Pour simplifier ceci à la base de l’os nu:

  

Réglez votre maximum à 160.

Mon plugin:

 (function($) { $.fn.textCounter = function(options) { var defaults = { maxlimit: 100, // max limit character description: null, // element for descript count character enter: true // if accept enter }; var options = $.extend({}, defaults, options); if (options.description != null) { if (typeof options.description == 'ssortingng') options.description = $('#' + options.description); } var fevent = function(ev) { var value = $(this).val(), k = ev.charCode || ev.keyCode || ev.which, incremente = 1; if (k == 8) incremente = -1; if (options.enter == false && k == 13) return false; if (ev.ctrlKey || ev.altKey || ev.metaKey) //Ignore return true; if ((value.length + incremente) > options.maxlimit) return false; return true; }; var fcounter = function(ev) { var value = $(this).val(); $(options.description).text(options.maxlimit - value.length); }; $(this).each(function(i, el) { if ($(this).is(':input')) { $(this).unbind('keypress.textCounter').bind('keypress.textCounter', fevent); $(this).unbind('keyup.textCounter').bind('keyup.textCounter', fcounter); } }); }; })(jQuery); 
 var limit="NO of characters";

$(this).val( $(this).val().subssortingng(0, limit) );