2013-05-25 234 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

相关问题