我想获得textarea中的字符数。这需要在每次击键时更新。所以我使用了这个简单的功能:
$(document).on('keyup', 'textarea', function () {
var count = $(this).val().length;
console.log(count);
});
现在的问题是,如果我尝试输入非常快,则重复计数。我们可以在控制台中看到重复。这种重复背后的原因是什么?另外我怎么能避免呢? 这是一个小提琴:https://jsfiddle.net/w6mzzfd8/
谢谢!
答案 0 :(得分:3)
根据文档:
当浏览器注册键盘输入时,按键事件将发送到元素。这类似于keydown事件,除了密钥重复的情况。如果用户按下并按住键,则会触发一次keydown事件,但会为每个插入的字符触发单独的按键事件。此外,修饰键(如Shift)会触发keydown事件,但不会触发按键事件。
<强>解决方案:强>
使用keydown
代替keyup
代码:
$(document).on('keydown', 'textarea', function () {
var count = $(this).val().length;
console.log(count);
});
<强> Working Demo 强>