JavaScript实现Textarea每行字符长度限制与字数统计

作者:纸飞机时间:2026-10-26 20:59:59浏览:503

本文介绍如何使用JavaScript限制HTML中textarea元素的每行输入字符数,并解决ASP.NET服务端控件无效的问题。通过自定义脚本实现按行截断、中英文字符长度区分计算以及剩余字数动态显示功能,适用于需要严格格式控制的文本输入场景。

实现Textarea每行长度限制的背景

原生HTML的textarea元素并不具备直接限制每行字符串长度的属性。



在ASP.NET环境中,服务端TextBox控件的相关属性同样无法生效,因此必须依赖JavaScript脚本来实现控制逻辑。


以下是具体的实现代码示例。



JavaScript核心逻辑如下:



代码实现:

 
核心限制逻辑代码function textCounter(field, maxlimit, lines) { //参数说明:field是textarea对象,maxlimit是最大允许长度,lines是行数
var arr = field.value.split("\n"); //首先我们要为验证行数,通过分行符“\n”
var perLine = "";
var value = "";
if (arr.length < lines) lines = arr.length; //判断行数是否超出了我们规定的行数,如果超了就把行数改为超出的,因为我们要算字符串长度
for (loop = 0; loop < lines; loop++) { //循环测数字符串总长度,不多说了
perLine = arr[loop];
if (perLine.length > maxlimit)
perLine = perLine.substring(0, maxlimit);
value = value + perLine;
if (loop != lines - 1)
value = value + "\n";
} 
if (field.value != value)
field.value = value;
if (checkstr(value, maxlimit)) { //判断字符串长度是不是超标
field.value = value.substring(0, maxlimit); //删除超除的多余字符串
} 
} 
剩余字数显示与长度校验函数function showOverWords(obj, maxlength) { //显示剩余的可输入字符数obj为txteara对象,maxlength最大长度
len = obj.value.length;
$("#wordCount").html(maxlength - len); //这句是jquery的,可以自己相对自己改改。 表示修改id为wordCount标签的值
} 
function checkstr(str, digit) { //判断中文和英文,字符串的长度是否超标
var n = 0;
for (i = 0; i < str.length; i++) {
var leg = str.charCodeAt(i); //ASCII码
if (leg > 255) { //大于255的都是中文
n += 2; //如果是中文就是2个字节
} else {
n += 1; //英文,不多说了
} 
} 
if (n > digit) {
return true;
} else {
return false;
} 
} 


ok上面有三个函数,我们通过调用这三个函数就可以实现我们所想要的功能

作者最新文章