2013-05-25 119 views
0

我想計算短信應用程序的鍵入字符字節。如果輸入ASCII碼,則計數1個字節,非ASCII碼計數2個字節。如果總字符字節超過80字節,腳本應該提醒('已經超過80字節'),並且在此之後它應該從最後減少到小於80字節。但是,cutBylen()函數似乎不適用於此腳本。它只是警報,但不會切斷字符串。有人能告訴我問題在哪裏嗎?非常感謝你。Javascript函數不能在jquery中工作

   <script> 
        function countBytes(str) { 
         var count = 0; 
         for (var i = 0; i < str.length; i++) { 
          var onechar = str.charAt(i); 
          if (str.charCodeAt(i) >= 128) { 
           count += 2; 
          } else if (onechar != '\r') { 
           count++; 
          } 
         } 
         return count; 
        } 
       </script> 
       <script> 
        function cutByLen(str, byteLen) { 
         var tmpStr = str; 
         while (countBytes(tmpStr) > byteLen) { 
          var len = tmpStr.length; 
          tmpStr = tmpStr.substr(0, len - 1); 
         } 
         return tmpStr; 
        } 
       </script> 
       <script> 
        $(document).ready(function() { 

         $("#smstext1").keyup(function(){ 
          var text = $(this).val(); 
          var byteLen = countBytes(text); 
          var len = text.length; 

          if (byteLen >80){ 
           alert('You have reached over 80bytes'); 

           var tmpStr = cutByLen(text, byteLen); 

           $(this).val(tmpStr);  

          } 


         }); 
        }); 
       </script> 

回答

2

你有

var tmpStr = cutByLen(text, byteLen); 

其中byteLen是文本的長度,它減少了字符串,如果它比本身更長的時間,這顯然什麼都不做。你可能意思是

var tmpStr = cutByLen(text, 80); 
+0

完美!它真的有效。在調試過程中我非常沮喪,什麼都沒發現。我知道它應該很簡單。再次感謝你,夥計:)。 – xnote

相關問題