当前位置: 代码迷 >> Web前端 >> textarea兑现 maxlength
  详细解决方案

textarea兑现 maxlength

热度:331   发布时间:2012-11-23 00:03:43.0
textarea实现 maxlength
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>
  相关解决方案