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>