当我在textarea中键入第一个字符时,它仍显示0,而第二个字符的count则为1。不知道为什么?我正在使用keydown事件。
false
答案 0 :(得分:5)
使用input
事件。这将涵盖文本框值的所有更改,包括copy&粘贴等(即使用鼠标)......
$("#text").on("input", updateCount);
function updateCount() {
count = $("#text").val().length;
$("#count").text(count + " of 240");
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="text"></textarea>
<div id="count"></div>
&#13;
还有一些其他问题,例如您执行updateCount
函数的事实,而不是将其分配给事件处理程序(函数名后面有()
。如果删除那么它成为函数的引用,而不是在那里执行它。)
我还使用了textarea元素的id,而不是类,但那只是我 - 如果一个类在你的场景中有效,那么它很好。
答案 1 :(得分:0)
您需要将函数传递给$.keydown
,而不是执行结果:
$(".textArea").keydown(updateCount);
function updateCount() {
count = $('.textArea').val().length;
this.$countDiv.text(count + ' of 240');
}
当您通过执行结果时,必须在keydown
处理之前执行。由于keydown
取决于执行updateCount
的结果,因此updateCount
始终在keydown
之前执行,因此您在keydown
之前获得了字符串状态的长度。
答案 2 :(得分:0)
对于您尝试实现的用例,keydown事件对于它来说是不够的。您必须使用keyup
事件。此时按键完成。
问候。
答案 3 :(得分:0)
$(".textArea").on('keydown', function(event) {
updateCount();
});
function updateCount() {
var count = $(".textArea").val().length;
console.log("count",count);
}
答案 4 :(得分:-1)
所有3个更改keyup粘贴上的fire事件。如果有人试图粘贴文本框,它也会处理 如下所示
$('.textArea').on('change keyup paste', updateCount());