如何限制textarea标签文本长度
1个回答
展开全部
方法1:使用maxlength属性
<textarea id="mess-input" type="text" name="message" maxlength="10"></textarea><br>
使用maxlength即可限制最大字符数,但该属性不兼容IE8,所以考虑用下面的办法。
方法2:js实现-达到最大长度后禁用键盘输入
window.onload = function()
{
document.getElementById('text1').onkeydown = function()
{
if(this.value.length >= 10)
event.returnValue = false;
}
}
上述代码在textarea值长度超过10时,禁用键盘输入。但该方法在firefox17浏览器中不兼容,且有两个bug。
1.长度达到最大以后,由于屏蔽键盘动作,已输入的文本内容无法删除和编辑。
2.如果使用ctrl+v直接粘贴入一段长度超限的文本,则该方法无效。
方法3:js实现-用substr方法截取textarea前端若干字内容
function limitLength(obj, length) {
var desc = obj.value;
obj.value = substr(obj.value, length);
}
function substr(str, length) {
var l = 0, i = 0;
while (l < length && i < str.length) {
l += 1;
if (str.substring(i, i + 1).match(/[\u4e00-\u9fa5]/)) l += 2;
i += 1;
}
return str.substring(0, i);
}
该方法监测文本框输入,当超出最大长度时,从前面截取最大长度个字节放入文本框中。该方法在各浏览器中均支持,且无方法2中的各种问题。
以上就是限制<textarea>标签最大字符数的3种方法,如果需要分别限制中英文字符数的话,在js代码前加一段正则表达式匹配,并分别做限制即可。
中文及字符正则表达式: /[^ -~]+/g
ASCII码正则表达式: /\D+/g
<textarea id="mess-input" type="text" name="message" maxlength="10"></textarea><br>
使用maxlength即可限制最大字符数,但该属性不兼容IE8,所以考虑用下面的办法。
方法2:js实现-达到最大长度后禁用键盘输入
window.onload = function()
{
document.getElementById('text1').onkeydown = function()
{
if(this.value.length >= 10)
event.returnValue = false;
}
}
上述代码在textarea值长度超过10时,禁用键盘输入。但该方法在firefox17浏览器中不兼容,且有两个bug。
1.长度达到最大以后,由于屏蔽键盘动作,已输入的文本内容无法删除和编辑。
2.如果使用ctrl+v直接粘贴入一段长度超限的文本,则该方法无效。
方法3:js实现-用substr方法截取textarea前端若干字内容
function limitLength(obj, length) {
var desc = obj.value;
obj.value = substr(obj.value, length);
}
function substr(str, length) {
var l = 0, i = 0;
while (l < length && i < str.length) {
l += 1;
if (str.substring(i, i + 1).match(/[\u4e00-\u9fa5]/)) l += 2;
i += 1;
}
return str.substring(0, i);
}
该方法监测文本框输入,当超出最大长度时,从前面截取最大长度个字节放入文本框中。该方法在各浏览器中均支持,且无方法2中的各种问题。
以上就是限制<textarea>标签最大字符数的3种方法,如果需要分别限制中英文字符数的话,在js代码前加一段正则表达式匹配,并分别做限制即可。
中文及字符正则表达式: /[^ -~]+/g
ASCII码正则表达式: /\D+/g
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询