2013-05-25 2 views
0

SMS 애플리케이션에 대해 입력 된 문자 바이트를 계산하고 싶습니다. ASCII가 입력되면 1 바이트를, 비 ASCII의 경우 2 바이트를 계산합니다. 총 문자 바이트가 80 바이트보다 크면 스크립트는 경고해야합니다 ('귀하는 80 바이트 넘음에 도달했습니다').이 후 80 바이트 미만이 될 때까지 끝에서 잘라야합니다. 그러나 cutBylen() 함수는이 스크립트에서 작동하지 않는 것 같습니다. 그냥 경고하지만 문자열을 자르지 않습니다. 누군가가 문제가있는 곳을 말해 줄 수 있습니까? 고맙습니다.jquery에서 Javascript 함수가 작동하지 않습니다.

   <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

당신은 분명 아무것도하지 않는 한, 더 이상 자체보다 인 경우는 문자열을 잘라 있도록 byteLen 텍스트의 길이

var tmpStr = cutByLen(text, byteLen); 

있습니다. 당신이 의미 한 바는

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

완벽합니다! 정말 효과가있었습니다. 나는 디버깅하는 동안 정말 좌절감을 느끼고 아무것도 발견하지 못했다. 나는 그것이 아주 간단해야한다는 것을 알았다. 고마워, 친구. :) – xnote

관련 문제