textarea没有maxlength属性,下面函数是实现类似text输入框maxlength属性的效果
IE使用onpropertychange事件,其他浏览器添加事件监听 addEventListener
<html>
<head>
<script type="text/javascript">
var oldValue=new Array();
function checkMaxLen(){
var cm_content = document.getElementById("cm_content");
var report_content = document.getElementById("report_content");
var cm_maxlength = 30;
var report_maxlength=20;
var cm_num = 0;
var report_num=1;
var cm_length = calculate_byte(cm_content.value);
var report_length = calculate_byte(report_content.value);
if(cm_length>cm_maxlength){
//alert("评价内容最多输入" + cm_maxlength + "个汉字、字母或数字!");
cm_content.value=oldValue[cm_num];
}
else{
oldValue[cm_num]=cm_content.value;
}
if(report_length>report_maxlength){
//alert("举报内容最多输入" + report_maxlength + "个汉字、字母或数字!");
report_content.value=oldValue[report_num];
}
else{
oldValue[report_num]=report_content.value;
}
}
function calculate_byte( sTargetStr ) {//计算字符串的字数
var sTmpStr, sTmpChar;
var nOriginLen = 0;
sTmpStr = new String(sTargetStr);
nOriginLen = sTmpStr.length;//字符串的字数
return nOriginLen;
}
/*
function calculate_byte( sTargetStr ) {//检查字符串的长度,中文占2个字符,数字特殊符号占一个字符
var sTmpStr, sTmpChar;
var nOriginLen = 0;
var nStrLength = 0;
sTmpStr = new String(sTargetStr);
nOriginLen = sTmpStr.length;//字符串的字数
for ( var i=0 ; i < nOriginLen ; i++ ) {
sTmpChar = sTmpStr.charAt(i);
if (escape(sTmpChar).length > 4) {//如果转码后的长度大于4,既是中文或韩文日文类的多字符语言
nStrLength += 2;
} else if (sTmpChar!='\r') {//不计算换行符,其他特殊符号,数字及英文都占一个字符
nStrLength ++;
}
}
return nStrLength; //返回计算后的长度,以字符为单位,中文占2字符,英文及符号数字占一字符,用此方法可以获取字符串字符数,判断中文数和英文数
}
*/
</script>
</head>
<body>
评论内容:<textarea id="cm_content"></textarea></br>
举报内容:<textarea id="report_content"></textarea>
<script type="text/javascript">
//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。
if(/msie/i.test(navigator.userAgent)) //ie浏览器
{
document.getElementById("cm_content").onpropertychange=checkMaxLen;//ie浏览器下 onpropertychange事件指 属性变化监听(即时的),包括脚本改变对象属性值,onchange只是对象失去焦点后 才激活事件(不即时),onpropertychange事件firefox、opera、safari、 chrome都不支持,只有IE支持
document.getElementById("report_content").onpropertychange=checkMaxLen;
}
else
{//非ie浏览器,比如Firefox
document.getElementById("cm_content").addEventListener("input",checkMaxLen,false);
document.getElementById("report_content").addEventListener("input",checkMaxLen,false);
}
</script>
</body>
</html>