1

我们有一个非常简单的单词计数器,可以很好地满足我们的需要。不过,我们现在需要对其进行修改。请在http://jsfiddle.net/MUSXU/1上查看我们的 JSfiddle

(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().replace(/\s+/g, " ");;
                if(text === "") {
                    wordcount = 0;
                } else {
                    wordcount = $.trim(text).split(" ").length;
                    var URLs = text.match(/([^\s])+\.(com|net|org|biz|gov|edu|mobi|info|ca|us|mil)/g);
                    if(URLs != null && URLs.length > 0){
                      wordcount += (URLs.length*2);
                    }
                }
                if(wordcount > options.limit) {
                   obj.next().html('<span style="color: #DD0000;">-' + parseInt(wordcount - options.limit, 10) + ' words left</span>');

                    $("#submit").prop('disabled', true);
                } else {
                    obj.next().html((options.limit - wordcount)+' words left');
                $("#submit").prop('disabled', false);
                } 
            });
        });
    };
})(jQuery);
$('textarea').textareaCounter({limit:15});

我们有一个问题:

  1. 如果页面上的任何字符计数器超出其限制,我们需要保持禁用提交按钮。现在,按照我们的编码方式,当字数超过时,提交按钮被成功禁用,但一旦你输入下一个文本区域,它就会立即重新启用。

我不太擅长 javascript,只是为了满足我们的需要而将其组合在一起,这是我在部署它之前需要做的最后一件事。

我将不胜感激您可以提供的任何帮助。

4

1 回答 1

2

您可以使用数组来保存结果以检查验证。看到这个...

http://jsfiddle.net/kmd97/Up9KS/

var res = [];

 $("#submit").prop('disabled', false);
                    $.each(res, function (index, value) {
                        if (value) {
                            $("#submit").prop('disabled', true);
                            return false;
                        }

添加此位 onload 以模拟按键,这可能是实现预先验证的最干净/最简单的方法。

var press = jQuery.Event("keyup");
press.ctrlKey = false;
press.which = 40;
$("textarea").trigger(press);
于 2013-02-13T17:43:34.373 回答