Javascript 带有css和jquery的类似Twitter的svg文本计数器-https://jsfiddle.net/moss24/LnoL2xdu/

Javascript 带有css和jquery的类似Twitter的svg文本计数器-https://jsfiddle.net/moss24/LnoL2xdu/,javascript,jquery,css,Javascript,Jquery,Css,我正在尝试创建一个类似twitter的文本计数器,它增加一个绿色的宽度直到75%,然后添加一个黄色直到98%,如果输入值大于等于400,则添加一个红色,并添加一个名为highlight的类。同样,当用户按退格键/以任何方式删除文本时,颜色宽度都会减小。 上面已经附加了一个链接 非常感谢您的支持。javascript太多了,只需一小段代码就可以简单得多: (function($) { $.fn.textCounter = function(options) { var se

我正在尝试创建一个类似twitter的文本计数器,它增加一个绿色的宽度直到75%,然后添加一个黄色直到98%,如果输入值大于等于400,则添加一个红色,并添加一个名为highlight的类。同样,当用户按退格键/以任何方式删除文本时,颜色宽度都会减小。 上面已经附加了一个链接


非常感谢您的支持。

javascript太多了,只需一小段代码就可以简单得多:

(function($) {
    $.fn.textCounter = function(options) {
        var settings = $.extend({
            maxText: 400,
            textWarning: 75
        }, options);

        return this.each(function() {
            $(this).on('keyup', function() {
                var textLength = $(this).val().length;
                var progressbar = $('#commentTxtCounter > span');
                var progressbarLength = (textLength*100)/settings.maxText;
                if (progressbarLength > 100) {
                    progressbarLength = 100;
                }
                progressbar.css('width', progressbarLength + '%');
                if (textLength == 0 || textLength >= settings.maxText) {
                    $('#submit').prop('disabled', true);
                } else {
                    $('#submit').prop('disabled', false);
                }
                if (textLength >= settings.maxText) {
                    progressbar.attr('class', 'text-over');
                } else if (textLength >= settings.textWarning) {
                    progressbar.attr('class', 'text-warn');
                } else {
                    progressbar.attr('class', 'text-safe');
                }
            });
        });
    }
}(jQuery));
$('.text-control').textCounter();
使用更少的html:

<textarea class="text-control " rows="1" data-min-rows="1" placeholder="comment..."></textarea>
<button type="submit" id="submit" disabled>Submit</button>
<div class="counter-cont">
    <div class="counter-sub" id="commentTxtCounter">
        <span class="text-safe"></span>
    </div>
</div>

提交

到目前为止,您做了什么?检查小提琴做得很好,但我希望在每个进度条达到最大长度后附加进度条,而不是拥有整个容器。您可以绘制进度条吗?我不清楚您希望它如何显示。谢谢您的贡献。最后一个路径是,当textLength>=settings.maxText时,应该用浅红色突出显示over text值,以显示该值已超过其max inputbackground color i meanshmm。。。有趣的挑战,我会努力做到这一点:)