使用JS来做中英文混合字符长度限制 博客分类: javascript JS中英文字符长度截取
程序员文章站
2024-03-18 18:54:28
...
最近在写一个系统,但是数据库中设计的是全汉字的长度为最大
那么在HTML端,取字符长度来说,str.length的长度不管用英文,只计算单纯的长度,而不是占用的字符长度
下面是自己综合网上的 计算字符长度,以及截取字符长度自己组装写了的一套方法
这样只要在Input中添加charLength属性,并给一个字符长度的值就OK了
比如,限制的为5
那么3个汉字就会被截取成两哥
如果是两个汉字一个英文字母,则还是5个字符
那么在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个字符