2013-01-21 12 views
2

jQuery 함수를 사용하여 키 업 왼쪽 문자를 계산합니다.jQuery textarea 문자 수 (캐리지 리턴 포함)

function charactersLeft(e) { 
    var textArea = e.data.textArea, 
      charLeft = e.data.maxLength - textArea.val().length, 
      message = e.data.messageContainer; 

    if (charLeft < e.data.warningLength) { 
     message.addClass('red').removeClass('green'); 
    } 
    else { 
     message.addClass('green').removeClass('red'); 
    } 

    message.text(charLeft); 
} 

이 코드는 정상적으로 작동하지만 캐리지 리턴은 2 자루가 아닌 하나의 문자로 계산됩니다. 이것은 캐리지 리턴이 '\ r \ n'으로 전달되기 때문에 서버로 전달 될 때 문제를 일으 킵니다.

내가 입력 할 때마다 문자 수를 1 대신 2를 빼고 캐리지 리턴을 삭제할 때 1 대신 2를 더하는 코드를 수정하려면 어떻게해야합니까?

고맙습니다.

답변

0

if(e.which==13){charLeft--}과 같은 값을 넣습니다. 이것은 추가 카운트를 1 회 감산합니다.

+0

안녕하세요! 귀하의 회신에 감사드립니다. 나는 이미 그것을 시도하고 첫 번째 시도에서 작동하지만 캐리지 리턴 성공하지 않습니다. (이상한) – dork

+0

오, 그래, 나도 알아. charLeft를 호출하기 전에 다시 입력 한 문자 수를 계산하기 때문입니다. – dork

+0

예,이 작업을 수행하려면 charLeft 값을 유지해야합니다. – beNerd

0

아래 코드는 찾고있는 코드입니다.

아래 코드도 테스트되었습니다.

<script type="text/javascript" src="js/jquery.js"></script> 

<script type="text/javascript"> 

(function($) 
{ 
    $.fn.extend(
    { 
     limit: function(limit,element) 
     { 
      var interval, f; 
      var self = $(this); 

      $(this).focus(function() 
      { 
       interval = window.setInterval(substring,100); 
      }); 

      $(this).blur(function() 
      { 
       clearInterval(interval); 
       substring(); 
      }); 

      substringFunction = "function substring(){ var val = $(self).val();var length = val.length;if(length > limit){$(self).val($(self).val().substring(0,limit));}"; 
      if(typeof element != 'undefined') 
       substringFunction += "if($(element).html() != limit-length){$(element).html((limit-length<=0)?'0':limit-length);}" 

      substringFunction += "}"; 

      eval(substringFunction); 
      substring(); 
     } 
    }); 
})(jQuery); 

</script> 

<textarea id="myTextarea"></textarea> 
<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('#myTextarea').limit('140','#charsLeft'); 
    });  
</script> 
<div id="charsLeft"></div>