限定字符长度,截断中文字符

今日遇到个麻烦事。input限定输入字节数是8,中文自然算两个字节。本来一路顺利,keyup keydown keypress事件挨个试过去,把中文用正则替换成两个英文字符,超过8的就return false。ie下表现超级完美。
这个时侯Firefox下麻烦事就开始了,ie下,中文输入法状态下他也是能捕获键盘事件的。但ff下却无法捕获输入法状态下的键盘事件,比如我搜狗,他只能识别到最后那次空格……一恼火,干脆换条思路,直接截断字符来解决。效果感觉还行,总比没有好,此方法也适用于复制进去的文本。


$(“input”).bind(“keyup”,function() {
var str=this.value;
while (str.replace(/[^\x00-\xFF]/g,”aa”).length>8) {
str=str.substr(0,str.length-1);
}
this.value=str;
});

代码很简单,也很安全。想封装成其他形式请自便。

我这里用的是减法,对于input这种很合适。因为不会多出去很多字符的。
这里我事后搜到一个做加法的,也不错,可以参考一下。只是不建议像他这样直接给原生对象做扩展,容易冲突。放到自己的私有对象下会比较好。

我又回来啦

经历了一系列的波折,我的博客又开咯。考虑了半天,还是放在国外安全。就算被墙了,我的数据还能翻墙捞回来。国内就难说了。不想多提了。谨以此悼念……

应Ben所求,我放上博客服务器提供商 WOPUS IDC
国内有不少博客都是用他的,我是从 saywp.com这里看来的。
服务挺好的,速度也挺快。算是拿人手短吃人嘴短地推荐一下吧。

=============
Update
大概在09年7月左右,由于发现这个速度也比较慢,所以我后来就直接去Hostmonster买了空间,不再通过国内的代理商了。
我也建议有信用卡的同学直接去美国找服务商,而不要找中间代理商。毕竟中间隔了一层会比较麻烦一点。