JS验证中文字数的方法

JS验证中文字数的方法
input控件有个length的属性,可以方便地获取字数。可是,它所返回的字数无论是中文还是英文或者数字,1个字就算1个字。客户要限制字数的原因是为了页面显示的时候排版不会乱,因此一个汉字需要按2个英文字符来计算。php也是以一个汉字按2个英文字符计算的。这样的话,这个默认的length就无用武之地了。
怎么区分中文和英文呢? string对象有一个叫charCodeAt(index)的方法,可以获取字符串中某一个字符的编码。我们都知道,字母数字的ascii编码都小于255而汉字的编码肯定大于255,因此我们可以使用此方法来判断字符串占用多少英文字符的宽度。 以下为引用的内容:
 function GetCharLength(str)
{
var iLength = 0;
for(var i = 0;i<str.length;i++)
{
if(str.charCodeAt(i) >255)
{
iLength += 2;
}
else
{
iLength += 1;
}
}
return iLength;
} 字数统计有了,接下去我们需要实时地捕获用户的输入。我们可以采取在input文本框的onkeyup事件中加入字符串检测函数的调用即可。
本文来自PHP俱乐部

在检测完字符长度后,对于那些超长的,我们将采用自后往前截断的方法将多余的字符去除。
字符截断代码如下: 以下为引用的内容:
function CutStr(Str,Len)
{
var CurStr = "";
for(var i = 0;i<Str.length;i++)
{
CurStr += Str.charAt(i);
if(GetCharLength(CurStr )>Len)
{
return Str.substring(0,i);
}
}
return CurStr ;
}
至此,一个简单的限制用户输入字符数的方案完成了。
但是它并不完美。
更完美的做法是使用正则
javascript中,可以使用正则表达式来搜索字符串里的字符并替换,我们可以用此方法来获取字符串占用的宽度,代码如下:

以下为引用的内容:
String.prototype.len=function(){
return this.replace(/[^/x00-/xff]/g,"**").length;
}
这段代码为string对象建立了一个len的属性,用户可以直接使用string.len来获取字符串所占用的宽度。在这里,我们使用了一个小技巧,通过正则表达式将编码在255以外的字符换成2个*,这样就可以统计了。
phphc.com


如: 以下为引用的内容:
if (uname.len()>10){
            $("idTips").innerHTML=" 用户名长度超过限制";
       }
ok,到此使用len属性就可以正确的判断中文字符长度了。

文章来自:PHP爱好者俱乐部(PHPHC.COM),详文参考:http://www.phphc.com/a/wangyezhizuo/Javascript/20110303/2264.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值