如何限制在文本区域中输入的字符数

这是我尝试限制输入文本区域的字符数:

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

但是,它不能很好地工作。 如何在达到某个限制(例如255个字符)后阻止用户输入文本?

这是我用来限制1200个字符的东西。 当有人输入太多字符时,我只会截断该textarea的内容。

 $(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.substring(0, max_len); // truncate display_element.html("0"); } else { display_element.html(max_len - text_len); } } 

虽然这个问题很老了。 如果我是你,我会做一些非常简单的事情

  

这将限制用户在textarea中仅输入255个字符。

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

为了简化这个基本的裸骨:

  

将你的最大值设置为160。

我的插件:

 (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 == 'string') 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().substring(0, limit) );