js對輸入文字個數的限制...


發表留言或者微博的時候,對輸入文字個數的限制,下面分兩種情況,每種分別介紹兩種實現方式:

第一種:一個漢字算一位,兩個字母或符號算一位。

 

通過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;  
};  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM