jQuery - char计数器不适用于粘贴事件

时间:2009-11-02 13:52:02

标签: javascript jquery events

我写了一个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 个答案:

答案 0 :(得分:7)

textarea内容可以通过多种方式进行更改,而不是尝试全部捕获它们,只需安装一个每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);
})

答案 1 :(得分:3)

我通常将keyupchange

结合使用

当文本框失去焦点时,change事件将触发,但仅当该值在获得焦点后被修改时才会触发。

答案 2 :(得分:2)

快速发挥:

$("#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" />