PageSourceSearch

https://www.shingle.com/scripts/WaUtilities/InputCounter.js

js shingle.com collected 2026-10-08 03:29:16 UTC 2,642 bytes, 73 lines download raw bytes

1if (window.jQuery) {
2    $.fn.addCounter = function (addCountToElement, options) {
3        new Counter($(this), addCountToElement, options);
4        return this;
5    };
6}
7
8
9var Counter = function (elementToCount, addCountToElement, options) {
10    var elToCount = elementToCount,
11        addEl = addCountToElement,
12        settings = $.extend({
13            successLower: 24,
14            successUpper: 56,
15            dangerMin: 0,
16            dangerMax: 65,
17            successClass: 'text-success',
18            warningClass: 'text-warning',
19            dangerClass: 'text-danger',
20            outerCountHtml: '<span class="outer-count-text"> chars</span>',
21            innerCountHtml: '<span id="title_char_count" class="inner-count-text text"></span>',
22        }, options);
23    if (!addEl) {
24        var nextElement = elementToCount.siblings('label')[0];
25        if (!nextElement) {
26            nextElement = elementToCount.closest('label')[0];
27        }
28        if (nextElement) {
29            addEl = $(nextElement);
30        }
31    }
32
33    initCounter();
34
35
36    function initCounter() {
37        var $outerCountElement = $(settings.outerCountHtml)
38        var $innerCountElement = $(settings.innerCountHtml)
39        var elementCount = getElementValueLength(elToCount);
40        $innerCountElement.text(elementCount);
41        $outerCountElement.prepend($innerCountElement);
42        if (addEl.children()[0]) {
43            $(addEl.children()[0]).prepend($outerCountElement);
44        } else {
45            addEl.append($outerCountElement);
46        }
47        setCountClass($innerCountElement, getElementValueLength(elToCount));
48        elToCount.on('keyup', function (e, element) {
49            $innerCountElement.text(getElementValueLength(elToCount));
50            setCountClass($innerCountElement, getElementValueLength(elToCount));
51        });
52    };
53    function getElementValueLength(el) {
54        return el.val().replace(/{.*}/g, '').length;
55    };
56
57    function setCountClass(el, count) {
58        el = $(el).parent();
59        if (count > settings.successLower && count < settings.successUpper) {
60            setClass(el, settings.successClass);
61        } else if (count < settings.dangerMin || count > settings.dangerMax) {
62            setClass(el, settings.dangerClass);
63        } else {
64            setClass(el, settings.warningClass);
65        }
66    };
67    function setClass(el, elClass) {
68        el.removeClass(settings.successClass);
69        el.removeClass(settings.warningClass);
70        el.removeClass(settings.dangerClass);
71        el.addClass(elClass);
72    };
73}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.