PageSourceSearch

https://ev.be/a/en/userinterface/uibase/script/formElementTextarea.js?rev=9ScXqwR1HXQ

js ev.be collected 2026-09-26 02:36:14 UTC 5,722 bytes, 167 lines download raw bytes

1require(['domReady'], function (domReady) {
2    'use strict';
3
4    var init = function () {
5        var textAreas = document.querySelectorAll('textarea');
6        textAreas.forEach(function (textarea) {
7            var maxLength = textarea.className.match(/(^|\s)maxlength_(\d*)($|\s)/);
8            if (maxLength && maxLength[2] > 0) {
9                textarea.maxlength = maxLength[2];
10            }
11
12            var maxLines = textarea.className.match(/(^|\s)maxlines_(\d*)($|\s)/);
13            if (maxLines && maxLines[2] > 0) {
14                textarea.maxlines = maxLines[2];
15            }
16
17            var maxWords = textarea.className.match(/(^|\s)maxWords_(\d*)($|\s)/);
18            if (maxWords && maxWords[2] > 0) {
19                textarea.maxWords = maxWords[2];
20            }
21
22            var smsCount = textarea.className.match(/(^|\s)smsCount_(\d*)($|\s)/);
23            if (smsCount) {
24                textarea.smsCount = smsCount[2];
25            }
26            if (textarea.maxlines || textarea.maxlength || textarea.maxWords || textarea.smsCount) {
27                textarea.lastOkVal = textarea.value;
28                textarea.addEventListener('keydown', checkNextKey);
29                textarea.addEventListener('keyup', checkContent);
30                textarea.addEventListener('change', checkContent);
31                textarea.addEventListener('blur', checkContent);
32                textarea.addEventListener('focus', checkFocus);
33            }
34
35            if (document.getElementById('charscountdown_' + textarea.id)) {
36                textarea.showCountdown = 'chars';
37                textarea.countDownElemId = 'charscountdown_' + textarea.id;
38            }
39
40            textarea.countdownspan = document.getElementById('wordscountdown_' + textarea.id);
41            if (textarea.countdownspan) {
42                textarea.showCountdown = 'words';
43            }
44
45            textarea.smscountspan = document.getElementById('smscounter_' + textarea.id);
46            if (textarea.smscountspan) {
47                textarea.showSMSCounter = true;
48            }
49        });
50    };
51
52    function checkNextKey (event) {
53        var elem = event.target;
54        var regex;
55
56        if (event.keyCode === 8) {
57            return true;
58        }
59        if (elem.maxlength) {
60            if (elem.maxlength && elem.value.length >= elem.maxlength) {
61                return false;
62            }
63        }
64        if (elem.maxWords) {
65            regex = new RegExp('(.*\\s){' + (elem.maxlines - 1) + '}');
66            if (elem.value.match(regex)) {
67                return false;
68            }
69        }
70        if (elem.maxlines && event.keyCode === 13) {
71            regex = new RegExp('(.*\\n){' + (elem.maxlines - 1) + '}');
72            if (elem.value.match(regex)) {
73                return false;
74            }
75        }
76        return true;
77    }
78
79    function checkContent (event) {
80        var elem = event.target;
81        var wordCount = 0;
82        var characterCount = 0;
83        var messageCount;
84
85        if (elem.showCountdown === 'chars') {
86            updateCharCount(elem);
87        }
88
89        // Check for backspace and delete keys, they should always be allowed
90        if (typeof event.keyCode !== 'undefined' && (event.keyCode === 8 || event.keyCode === 46)) {
91            elem.lastOkVal = elem.value;
92            return;
93        }
94
95        if (elem.maxlength && elem.value.length > elem.maxlength) {
96            elem.value = elem.value.substring(0, elem.maxlength);
97            updateCharCount(elem);
98            return;
99        }
100
101        if (elem.maxlines) {
102            var re = new RegExp('(.*\\n){' + elem.maxlines + '}');
103            if (elem.value.match(re)) {
104                elem.value = elem.lastOkVal;
105                return;
106            }
107        }
108
109        if (elem.maxWords) {
110            if (elem.value.strip()) {
111                wordCount = elem.value.strip().split(/[\s]+/).length;
112            }
113            if (wordCount > elem.maxWords) {
114                elem.value = elem.lastOkVal;
115                wordCount = elem.maxWords;
116            }
117        }
118
119        if (elem.smsCount) {
120            if (elem.value.length <= 160) {
121                characterCount = elem.value.length;
122                messageCount = 1;
123            } else if (elem.value.length > 160) {
124                characterCount = elem.value.length;
125                if (characterCount % 153 !== 0) {
126                    var i = characterCount;
127                    messageCount = 0;
128                    while (i !== 0 && i >= 0) {
129                        messageCount++;
130                        i = i - 153;
131                    }
132                } else {
133                    messageCount = characterCount / 153;
134                }
135            }
136        }
137
138        if (elem.showCountdown === 'words') {
139            elem.countdownspan.innerHTML = (elem.maxWords - wordCount).toString();
140        }
141
142        if (elem.showSMSCounter === true) {
143            if (messageCount > 1) {
144                elem.smscountspan.innerHTML =
145                    elem.smsCount = characterCount + ' (' + messageCount + ' ' + 'messages' + ')';
146            } else {
147                elem.smscountspan.innerHTML =
148                    elem.smsCount = characterCount + ' (' + messageCount + ' ' + 'message' + ')';
149            }
150        }
151
152        elem.lastOkVal = elem.value;
153    }
154
155    function checkFocus (event) {
156        event.target.lastOkVal = event.target.value;
157    }
158
159    function updateCharCount (elem) {
160        var countElement = document.getElementById(elem.countDownElemId);
161        if (countElement) {
162            countElement.innerHTML = (elem.maxlength - elem.value.length).toString();
163        }
164    }
165
166    domReady(init);
167});

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.