js计算textarea输入文字的长度

前言编码

平常开发过程当中,有些时候咱们想使用textarea,而后限制输入的长度,在textarea末尾显示剩余可输入的字节数。spa

以下图:code

 

 解决方法:blog

经常使用的有三种方法:开发

一、经过判断charCodeAt,区分字母与中文 ,而后计算字符串的长度。字符串

二、经过使用charCodeAt 和 0xff00区分中文与英文,这个代码量稍微减小一些。io

三、使用正则,把输入的中文,转成英文。1个中文等于两个英文,最后计算英文个数。function

 

代码以下: class

方法一:方法

复制代码
var obj = {};
obj.GetLength = function(str) {
    // <summary>得到字符串实际长度,中文2,英文1</summary> // <param name="str">要得到长度的字符串</param>
    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<length; i++) {
  if ((str.charCodeAt(i) & 0xff00) != 0) { // 若是是英文,返回0
    blen ++;
  }
  blen ++;
}
复制代码

方法三(更更简洁的方法):

var obj = {};
obj.GetLength = function(str) { // str是输入的字符串
    return str.replace(/[\u0391-\uFFE5]/g,"aa").length;   // 先把中文替换成两个字节的英文,再计算长度
};  
alert(obj.GetLength('这是中文aaaaaa'));

 

TIP:

charCodeAt()方法的做用是:返回指定位置的字符的 Unicode 编码
相关文章
相关标签/搜索