欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用JS来做中英文混合字符长度限制 博客分类: javascript JS中英文字符长度截取 

程序员文章站 2024-03-18 18:54:28
...
最近在写一个系统,但是数据库中设计的是全汉字的长度为最大

那么在HTML端,取字符长度来说,str.length的长度不管用英文,只计算单纯的长度,而不是占用的字符长度

下面是自己综合网上的 计算字符长度,以及截取字符长度自己组装写了的一套方法

$(document).ready(function() {
	$( "input,textarea" ).live("input",function() {
		debugger;
		var limit = $(this).attr("charLength"); 
		if(limit==""||limit==null) {
			return;
		}
		var length = fucCheckLength($(this).val());
		if(length>limit) {
			$(this).val(subCharStr($(this).val(),limit));
		}
	});
});

function fucCheckLength(strTemp) {
    var i, sum;   
    sum = 0;   
    for (i = 0; i < strTemp.length; i++) {   
        if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 255)) {   
            sum = sum + 1;   
        } else {   
            sum = sum + 2;   
        }   
    }   
    return sum;   
}

function subCharStr(str,n){  
   var _len=fucCheckLength(str,n);
   if(_len>n){  
     var _newLen=Math.floor(n/2);  
     var _strLen=str.length;
     var _newStr = "";
     for(var i=_newLen;i<=_strLen;i++){
    	 var tmpStr = str.substr(0,i);
         if(fucCheckLength(tmpStr)>n){
             return _newStr;
             break;
        } else {
        	_newStr = tmpStr;
        }
     }  
   }else{  
     return str;  
   }  
}


这样只要在Input中添加charLength属性,并给一个字符长度的值就OK了

比如,限制的为5
那么3个汉字就会被截取成两哥
如果是两个汉字一个英文字母,则还是5个字符