PageSourceSearch

https://everest.fapemig.br/Themes/js/textareacounter.js

js fapemig.br collected 2026-10-01 10:32:30 UTC 6,119 bytes, 163 lines download raw bytes

1/*
2 * jQuery Textarea Characters Counter Plugin v 2.0
3 * Examples and documentation at: http://roy-jin.appspot.com/jsp/textareaCounter.jsp
4 * Copyright (c) 2010 Roy Jin
5 * Version: 2.0 (11-JUN-2010)
6 * Dual licensed under the MIT and GPL licenses:
7 * http://www.opensource.org/licenses/mit-license.php
8 * http://www.gnu.org/licenses/gpl.html
9 * Requires: jQuery v1.4.2 or later
10 */
11(function($){
12    $.fn.textareaCount = function(options, fn) {
13        var defaults = {
14            maxCharacterSize: -1,
15            originalStyle: 'originalTextareaInfo',
16            warningStyle: 'warningTextareaInfo',
17            warningNumber: 20,
18            displayFormat: '#input Caracteres | #words Palavras'
19        };
20        var options = $.extend(defaults, options);
21
22        var container = $(this);
23
24        $("<div align='right' class='charleft'>&nbsp;</div>").insertAfter(container);
25
26        //create charleft css
27        var charLeftCss = {
28            //'width' : container.width()
29        };
30
31        var charLeftInfo = getNextCharLeftInformation(container);
32        charLeftInfo.addClass(options.originalStyle);
33        charLeftInfo.css(charLeftCss);
34
35        var numInput = 0;
36        var maxCharacters = options.maxCharacterSize;
37        var numLeft = 0;
38        var numWords = 0;
39
40        container.bind('keyup', function(event){limitTextAreaByCharacterCount();})
41            .bind('mouseover', function(event){setTimeout(function(){limitTextAreaByCharacterCount();}, 10);})
42            .bind('paste', function(event){setTimeout(function(){limitTextAreaByCharacterCount();}, 10);});
43
44
45        function limitTextAreaByCharacterCount(){
46            charLeftInfo.html(countByCharacters());
47            //function call back
48            if(typeof fn != 'undefined'){
49                fn.call(this, getInfo());
50            }
51            return true;
52        }
53
54        function countByCharacters(){
55            var content = container.val();
56            var contentLength = content.length;
57
58            //Start Cut
59            if(options.maxCharacterSize > 0){
60                //If copied content is already more than maxCharacterSize, chop it to maxCharacterSize.
61                if(contentLength >= options.maxCharacterSize) {
62                    content = content.substring(0, options.maxCharacterSize);
63                }
64
65                var newlineCount = getNewlineCount(content);
66
67                // newlineCount new line character. For windows, it occupies 2 characters
68                var systemmaxCharacterSize = options.maxCharacterSize - newlineCount;
69                if (!isWin()){
70                    systemmaxCharacterSize = options.maxCharacterSize
71                }
72                if(contentLength > systemmaxCharacterSize){
73                    //avoid scroll bar moving
74                    var originalScrollTopPosition = this.scrollTop;
75                    container.val(content.substring(0, systemmaxCharacterSize));
76                    this.scrollTop = originalScrollTopPosition;
77                }
78                charLeftInfo.removeClass(options.warningStyle);
79                if(systemmaxCharacterSize - contentLength <= options.warningNumber){
80                    charLeftInfo.addClass(options.warningStyle);
81                }
82
83                numInput = container.val().length + newlineCount;
84                if(!isWin()){
85                    numInput = container.val().length;
86                }
87
88                numWords = countWord(getCleanedWordString(container.val()));
89
90                numLeft = maxCharacters - numInput;
91            } else {
92                //normal count, no cut
93                var newlineCount = getNewlineCount(content);
94                numInput = container.val().length + newlineCount;
95                if(!isWin()){
96                    numInput = container.val().length;
97                }
98                numWords = countWord(getCleanedWordString(container.val()));
99            }
100
101            return formatDisplayInfo();
102        }
103
104        function formatDisplayInfo(){
105            var format = options.displayFormat;
106            format = format.replace('#input', numInput);
107            format = format.replace('#words', numWords);
108            //When maxCharacters <= 0, #max, #left cannot be substituted.
109            if(maxCharacters > 0){
110                format = format.replace('#max', maxCharacters);
111                format = format.replace('#left', numLeft);
112            }
113            return format;
114        }
115
116        function getInfo(){
117            var info = {
118                input: numInput,
119                max: maxCharacters,
120                left: numLeft,
121                words: numWords
122            };
123            return info;
124        }
125
126        function getNextCharLeftInformation(container){
127            return container.next('.charleft');
128        }
129
130        function isWin(){
131            var strOS = navigator.appVersion;
132            if (strOS.toLowerCase().indexOf('win') != -1){
133                return true;
134            }
135            return false;
136        }
137
138        function getNewlineCount(content){
139            var newlineCount = 0;
140            for(var i=0; i<content.length;i++){
141                if(content.charAt(i) == '\n'){
142                    newlineCount++;
143                }
144            }
145            return newlineCount;
146        }
147
148        function getCleanedWordString(content){
149            var fullStr = content + " ";
150            var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
151            var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
152            var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
153            var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
154            var splitString = cleanedStr.split(" ");
155            return splitString;
156        }
157
158        function countWord(cleanedWordString){
159            var word_count = cleanedWordString.length-1;
160            return word_count;
161        }
162    };
163})(jQuery); 

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.