jQuery - счетчик символов не работает с событием вставки - PullRequest
5 голосов
/ 02 ноября 2009

Я написал счетчик символов jQuery, он работает, когда я печатаю, но не когда текст вставляется. Функция выполняется при вставке, но количество не изменяется. Я не уверен, что функция val() правильная или действительно синхронизирована с DOM. Есть идеи?

 counter = function () {
     $j("strong#status-field-char-counter").text($j("#Panel1messagesmessage").val().length);
     alert('event');
 };


 $j("textarea").keyup(counter);
 $j("textarea").bind('paste', counter);
 $j("#Panel1messagesmessage").bind('copy', counter);
 $j("#Panel1messagesmessage").bind('delete', counter);

Ответы [ 3 ]

7 голосов
/ 02 ноября 2009

содержимое текстовой области можно изменить несколькими способами, вместо того, чтобы пытаться перехватить их все, просто установите подпрограмму, которая проверяет содержимое каждые 0,5 секунды, например

$(function() {
   window.charCount = 0;
   setInterval(function() {
      var c = $("textarea").val().length;
      if(c != window.charCount) {
        window.charCount = c;
        $("span").html(window.charCount); 
      }
    }, 500);
})
3 голосов
/ 02 ноября 2009

Я обычно использую keyup в сочетании с change

Событие change возникает, когда текстовое поле теряет фокус, но только если значение было изменено с момента получения фокуса.

2 голосов
/ 02 ноября 2009

Быстрая игра о:

$("#textarea").change(function() {
              $("#status-field-char-counter").text($("#textarea").val().length);
         }).keyup(function() {
          $("#status-field-char-counter").text($("#textarea").val().length);
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<p id="status-field-char-counter">here</p>
    <input id="textarea" type="text" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...