最近在写一个系统,但是数据库中设计的是全汉字的长度为最大
那么在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个字符