iTakeo

js对输入文字个数的限制…

发表留言或者微博的时候,对输入文字个数的限制,下面分两种情况,每种分别介绍两种实现方式:

第一种:一个汉字算一位,两个字母或符号算一位。

通过ASCII编码来判断

  1. textarea.onkeyup = function(){  
  2.     //[^\x00-\xff]即ASCII编码不在0-255的字符,也就是汉子了,先把所有汉子换成任意两个字符,最后除以2,得到一个字符  
  3.     var n = 150- Math.floor(this.value.replace(/[^\x00-\xff]/g,“aa”).length/2)  
  4.     span.innerHTML = n <=0 ? 0 : n;   
  5. };  

通过charCodeAt编码来判断

  1. //键盘up的时候判断  
  2. textarea.onkeyup = function(){  
  3.     var n = 1  ; //字母或符号累加判断  
  4.     var num = 0;  //总个数累加判断  
  5.     for (var i = 0; i < this.value.length; i++) {  
  6.         //根据charCodeAt来判断输入的是中文还是字母,符号    
  7.         charCode = this.value.charCodeAt(i);    
  8.         if (charCode >= 0 && charCode <= 128){  
  9.             //通过n模2来判断输入两次累加  
  10.             n++;  
  11.             if(n%2 == 0) num += 1;  
  12.         }else{  
  13.             num += 1;    
  14.         }     
  15.     };    
  16.     span.innerHTML = 150-num <=0 ? 0 : 150-num;  
  17. };  
150

另一种:是一个汉字算两位,一个字母或者符号算一位

通过ASCII编码来判断

  1. textarea.onkeyup = function(){  
  2.     //[^\x00-\xff]即ASCII编码不在0-255的字符,也就是汉子了,先把所有汉子换成任意两个字符  
  3.     var n = 150- this.value.replace(/[^\x00-\xff]/g,“aa”).length  
  4.     span.innerHTML = n <=0 ? 0 : n;   
  5. };  

通过charCodeAt编码来判断

  1. //键盘up的时候判断  
  2. textarea.onkeyup = function(){  
  3.     var num = 0;  //总个数累加判断  
  4.     for (var i = 0; i < this.value.length; i++) {  
  5.         //根据charCodeAt来判断输入的是中文还是字母,符号    
  6.         charCode = this.value.charCodeAt(i);    
  7.         if (charCode >= 0 && charCode <= 128){  
  8.             //字符就+1  
  9.             num += 1;  
  10.         }else{  
  11.             //汉子就+2  
  12.             num += 2;    
  13.         }     
  14.     };    
  15.     span.innerHTML = 150-num <=0 ? 0 : 150-num;  
  16. };  
150

2015/07/13 2 / /
标签:  暂无标签

评论回复

  1. 回复 asd

    真好

  2. 回复 匿名

    😛 不错

验证码: 3 + 1 =

回到顶部