-
Notifications
You must be signed in to change notification settings - Fork 0
/
my-textarea.js
46 lines (42 loc) · 1.33 KB
/
my-textarea.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Author: Matej Lednár
function createDynamicTextarea() {
this.style.color = "black";
var content = this.value;
var charsAtLine = this.cols * 1; // number conversion
var lineChecker = content.split(/\n/g);
var breaks = lineChecker;
var lineStatus = true; // line is ok
// checks if exists \n
if (breaks) {
breaks = breaks.length;
}
else {
breaks = 1; // default number of lines
lineChecker = []; // default state
lineChecker[0] = content; // process first line
}
for (var i = 0; i < lineChecker.length; i++) {
var check = lineChecker[i];
var length = check.length;
if (length > charsAtLine) {
var tmp = []; // creates new lines
var leftOver = length % charsAtLine;
for (var j = 0; j < Math.ceil(length / charsAtLine); j++) {
if ((length - (j * charsAtLine)) > leftOver ) {
tmp[j] = check.substring(j * charsAtLine, (j + 1) * charsAtLine) + "\n";
}
else {
tmp[j] = check.substring((j * charsAtLine));
this.rows = (this.rows * 1) - 1;
}
this.rows = (this.rows * 1) + 1;
}
lineChecker[i] = tmp.join("");
this.value = lineChecker.join("\n");
lineStatus = false; // line and all content were updated
}
}
if (lineStatus) {
this.rows = breaks;
}
}