我写了一个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);
答案 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)
我通常将keyup
与change
当文本框失去焦点时,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" />