在keyup上的文本区获取字符

Getting characters in textarea on keyup

本文关键字:获取 字符 文本区 keyup      更新时间:2023-09-26

我想获得文本区域中的字符数。这需要在每次击键时更新。所以我使用了这个简单的函数:

$(document).on('keyup', 'textarea', function () {
    var count = $(this).val().length;
    console.log(count); 
});

现在的问题是,如果我尝试键入非常快,计数重复。我们可以在控制台看到这种重复。这种重复背后的原因是什么?我怎样才能避免呢?这里有一个小提琴:https://jsfiddle.net/w6mzzfd8/

谢谢!

按文档:

当浏览器注册键盘输入时,keypress事件被发送给元素。这类似于keydown事件,除了重复键的情况。如果用户按下并保持一个键,则触发一次keydown事件,但是为每个插入的字符触发单独的keypress事件。此外,修改键(如Shift)会触发按下键事件,但不会触发按下键事件。

解决方案:

keydown代替keyup

代码:

$(document).on('keydown', 'textarea', function () {
 var count = $(this).val().length;
 console.log(count); 
});
演示工作