使用Javascript限制单词中textarea的长度?

Ste*_*ven 8 javascript jquery textarea

我在keyup上有以下绑定,如果它们超过150个字符就会发出警告,但是你可以按下okay并继续输入然后继续按下就可以了.

我想以150个单词(不是字符)裁剪它们,如果它们键入它,则删除附加内容.但我似乎无法弄明白该怎么做,我可以搞清楚角色.但不是言语.

jQuery('textarea').keyup(function() {
      var $this, wordcount;
      $this = $(this);
      wordcount = $this.val().split(/\b[\s,\.-:;]*/).length;
      if (wordcount > 150) {
        jQuery(".word_count span").text("150");
        return alert("You've reached the maximum allowed words.");
      } else {
        return jQuery(".word_count span").text(wordcount);
      }
    });
Run Code Online (Sandbox Code Playgroud)

Rez*_*aSh 9

/**
 * jQuery.textareaCounter
 * Version 1.0
 * Copyright (c) 2011 c.bavota - http://bavotasan.com
 * Dual licensed under MIT and GPL.
 * Date: 10/20/2011
**/
(function($){
    $.fn.textareaCounter = function(options) {
        // setting the defaults
        // $("textarea").textareaCounter({ limit: 100 });
        var defaults = {
            limit: 100
        };  
        var options = $.extend(defaults, options);

        // and the plugin begins
        return this.each(function() {
            var obj, text, wordcount, limited;

            obj = $(this);
            obj.after('<span style="font-size: 11px; clear: both; margin-top: 3px; display: block;" id="counter-text">Max. '+options.limit+' words</span>');

            obj.keyup(function() {
                text = obj.val();
                if(text === "") {
                    wordcount = 0;
                } else {
                    wordcount = $.trim(text).split(" ").length;
                }
                if(wordcount > options.limit) {
                    $("#counter-text").html('<span style="color: #DD0000;">0 words left</span>');
                    limited = $.trim(text).split(" ", options.limit);
                    limited = limited.join(" ");
                    $(this).val(limited);
                } else {
                    $("#counter-text").html((options.limit - wordcount)+' words left');
                } 
            });
        });
    };
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

加载它然后你可以使用以下工具使它工作:

$("textarea").textareaCounter({ limit: 100 });
Run Code Online (Sandbox Code Playgroud)

http://bavotasan.com/2011/simple-textarea-word-counter-jquery-plugin/


pra*_*nth 5

如果要阻止键入本身(当计数> 150时),您可以执行以下操作:

  • 使用keypress而不是keyup
  • 而不是return alert()先做一个alert()然后return false;

您可能还想添加更改(或模糊)事件处理程序来处理文本粘贴.

var maxWords = 150;
jQuery('textarea').keypress(function() {
    var $this, wordcount;
    $this = $(this);
    wordcount = $this.val().split(/\b[\s,\.-:;]*/).length;
    if (wordcount > maxWords) {
        jQuery(".word_count span").text("" + maxWords);
        alert("You've reached the maximum allowed words.");
        return false;
    } else {
        return jQuery(".word_count span").text(wordcount);
    }
});

jQuery('textarea').change(function() {
    var words = $(this).val().split(/\b[\s,\.-:;]*/);
    if (words.length > maxWords) {
        words.splice(maxWords);
        $(this).val(words.join(""));
        alert("You've reached the maximum allowed words. Extra words removed.");
    }
});?
Run Code Online (Sandbox Code Playgroud)

在这里小提琴