發表留言或者微博的時候,對輸入文字個數的限制,下面分兩種情況,每種分別介紹兩種實現方式:
第一種:一個漢字算一位,兩個字母或符號算一位。
通過ASCII編碼來判斷
textarea.onkeyup = function(){ //[^\x00-\xff]即ASCII編碼不在0-255的字符,也就是漢子了,先把所有漢子換成任意兩個字符,最后除以2,得到一個字符 var n = 150- Math.floor(this.value.replace(/[^\x00-\xff]/g,"aa").length/2) span.innerHTML = n <=0 ? 0 : n; };
通過charCodeAt編碼來判斷
//鍵盤up的時候判斷 textarea.onkeyup = function(){ var n = 1 ; //字母或符號累加判斷 var num = 0; //總個數累加判斷 for (var i = 0; i < this.value.length; i++) { //根據charCodeAt來判斷輸入的是中文還是字母,符號 charCode = this.value.charCodeAt(i); if (charCode >= 0 && charCode <= 128){ //通過n模2來判斷輸入兩次累加 n++; if(n%2 == 0) num += 1; }else{ num += 1; } }; span.innerHTML = 150-num <=0 ? 0 : 150-num; };
另一種:是一個漢字算兩位,一個字母或者符號算一位
通過ASCII編碼來判斷
textarea.onkeyup = function(){ //[^\x00-\xff]即ASCII編碼不在0-255的字符,也就是漢子了,先把所有漢子換成任意兩個字符 var n = 150- this.value.replace(/[^\x00-\xff]/g,"aa").length span.innerHTML = n <=0 ? 0 : n; };
通過charCodeAt編碼來判斷
//鍵盤up的時候判斷 textarea.onkeyup = function(){ var num = 0; //總個數累加判斷 for (var i = 0; i < this.value.length; i++) { //根據charCodeAt來判斷輸入的是中文還是字母,符號 charCode = this.value.charCodeAt(i); if (charCode >= 0 && charCode <= 128){ //字符就+1 num += 1; }else{ //漢子就+2 num += 2; } }; span.innerHTML = 150-num <=0 ? 0 : 150-num; };