前言
日常开发过程中,有些时候我们想使用textarea,然后限制输入的长度,在textarea末尾显示剩余可输入的字节数。
如下图:
解决方法:
常用的有三种方法:
1、通过判断charCodeAt,区分字母与中文 ,然后计算字符串的长度。
2、通过使用charCodeAt 和 0xff00区分中文与英文,这个代码量稍微减少一些。
3、使用正则,把输入的中文,转成英文。1个中文等于两个英文,最后计算英文个数。
代码如下:
方法一:
var obj = {};obj.GetLength = function(str) { //获得字符串实际长度,中文2,英文1 // 要获得长度的字符串 var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) realLength += 1; else realLength += 2; } return realLength;};alert(obj.GetLength('这是中文aaaaaaa'));
方法二(更简洁的方法):
var length = str.length; // str是输入的字符串var blen = 0;for (i=0; i
方法三(更更简洁的方法):
var obj = {};obj.GetLength = function(str) { // str是输入的字符串 return str.replace(/[\u0391-\uFFE5]/g,"aa").length; // 先把中文替换成两个字节的英文,再计算长度}; alert(obj.GetLength('这是中文aaaaaa'));
TIP:
charCodeAt()方法的作用是:返回指定位置的字符的 Unicode 编码