textarea计算字符长度错误

时间:2018-02-01 12:42:47

标签: javascript jquery textarea

当我在textarea中键入第一个字符时,它仍显示0,而第二个字符的count则为1。不知道为什么?我正在使用keydown事件。

false

5 个答案:

答案 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;
&#13;
&#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());