最近有一个需求是需要统计一个页面中textarea的有效行数,并限制总行数,显示当前可输入剩余行数。[当然除了判行数,还可以判空格,逗号,分号等等,都是类似的]。
最初的想法是:
写一个正则将多个连续回车"\n"替换为"\n",str.replace(/\n+/, "\n");
但是这样不能解决前面有多个空行等情况。
后来:
直接按照"\n"split,然后长度大于0的认为是一个空行,计数即可。
具体代码如下:
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
|
<script type="text/javascript">
var maxTagCount = 100;
function checkLine(textArea) {
var str = textArea.value;
var lines = str.split('\n');
var countLine = 0;
for (var i = 0; i < lines.length; i++) {
if (lines[i].length > 0) {
countLine++;
}
}
var tagElement = document.getElementById("tagTextarea");
if (countLine > maxTagCount) {
var varNewValue = "";
var index = 0;
for (var i = 0; i < lines.length; i++) {
if (index >= maxTagCount) {
break;
}
if (lines[i].length > 0) {
index++;
}
varNewValue += lines[i];
varNewValue += "\n";
}
textArea.value = varNewValue;
stat_left.innerHTML = 0;
} else {
stat_left.innerHTML = maxTagCount - countLine;
}
}
</script>
|