input textareaテキストボックスの長さ制限(中国語の文字を含む)


seam項目ではtextareaテキストボックス入力に関連していますが、入力の長さを制限するために、jsで制限して、twitter入力のような機能を実現しています.
ページ空間コード:
 
                <h:inputTextarea id="deviceDesc"
                               cols="60"
                               rows="3"
                              value="#{xHome.instance.deviceDesc}" 
                              onkeydown="chkTextareaLen(this.id,'counterDeviceDesc',255);" 
                              onkeyup="chkTextareaLen(this.id,'counterDeviceDesc',255);"/>
                <br/>    <span id="counterDeviceDesc" class="required">255</span>   
 
jsコード:
 
/**
*textarea         
*textareaId:textarea dom  
*maxLen:         
*/
function chkTextareaLen(textareaId,counterId,maxLen) {
	try{
		var textareaValue = document.getElementById(textareaId).value;
		var curLen = 0,substrLen = 0;
		
	    for (var i=0; i<textareaValue.length; i++) {  
	        if (textareaValue.charCodeAt(i)>127 || textareaValue.charCodeAt(i)==94) {  
	        	curLen += 2;  
	        } else {
	        	curLen ++;  
	        } 
	
	        if(curLen > maxLen){
	        	substrLen = i;
	        	break;
	        }
	    }
	    
	    if(curLen > maxLen) {
		    if(substrLen == 0) substrLen = maxLen;
	    	document.getElementById(textareaId).value = textareaValue.substring(0,substrLen);
	        alert("        "+maxLen+"   (   2   )"); 
	  	}else{
	    	document.getElementById(counterId).innerHTML = maxLen - curLen;
		}
	}catch(e){}
}
 
jsを公共のjsファイルの中に置いて、直接多重化することができます.