修改单词计数jquery函数

时间:2013-01-07 11:32:18

标签: jquery

(function($){
    $.fn.textareaCounter = function(options) {
        // setting the defaults
        // $("textarea").textareaCounter({ limit: 100 });
        var defaults = {
            limit: 150
        };  
        var options = $.extend(defaults, options);

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

            obj = $(this);
            obj.next(".hint").after('<span style="font-size: 11px; font-weight: bold; color:#6a6a6a; clear: both; margin: 3px 0 0 150px; float: left; overflow: hidden;" id="counter-text">Max. '+options.limit+' words</span>');

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

我使用上面的jQuery函数来计算在textarea中输入的单词。目前它为我工作。使用这个脚本,我可以计算我的表单中所有textareas中的单词,限制为150个单词。

但我需要将此功能应用于textarea来计算具有不同限制条件的单词。这意味着1个textarea有150个单词,一个有100个单词,一个有60个单词等...这里有人可以帮我做这个修改吗?

注意:我使用这个函数是这样的...... $("textarea").textareaCounter();

2 个答案:

答案 0 :(得分:1)

像这样使用:

$("#textarea-id").textareaCounter({
     limit:100 // world limit here
});

答案 1 :(得分:1)

您需要做的就是为特定的textarea字段设置不同的设置。

所以这是一个非常通用的解决方案:

$("textarea").textareaCounter();

它告诉每个文本框使用默认值。您可以使用id(或类)为特定textareas设置不同的设置

在下面的示例中,它假设页面上有2个textareas,其中id为my100limittextarea,另一个my150limittextarea

$("#my100limittextarea").textareaCounter({limit:100});
$("#my150limittextarea").textareaCounter({limit:150});