使用JS来做中英文混合字符长度限制

最近在写一个系统,但是数据库中设计的是全汉字的长度为最大

那么在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个字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值