在keyup上获取textarea中的字符

时间:2015-05-14 11:04:24

标签: javascript jquery

我想获得textarea中的字符数。这需要在每次击键时更新。所以我使用了这个简单的功能:

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

根据文档:

  

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

<强>解决方案:

使用keydown代替keyup

代码:

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

<强> Working Demo