javascript - 在 keyup 上获取文本区域中的字符

标签 javascript jquery

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

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

现在的问题是,如果我尝试快速打字,计数会重复。我们可以在控制台中看到重复。这种重复背后的原因是什么?我该如何避免呢? 这是一个 fiddle :https://jsfiddle.net/w6mzzfd8/

谢谢!

最佳答案

根据文档:

The keypress event is sent to an element when the browser registers keyboard input. This is similar to the keydown event, except in the case of key repeats. If the user presses and holds a key, a keydown event is triggered once, but separate keypress events are triggered for each inserted character. In addition, modifier keys (such as Shift) trigger keydown events but not keypress events.

解决方案:

使用 keydown 而不是 keyup

代码:

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

Working Demo

关于javascript - 在 keyup 上获取文本区域中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235747/

相关文章:

javascript - 单击某个元素后如何关闭汉堡菜单?

javascript - jQuery – 如何简化它?

jquery点击改变显示

javascript - 使用 javascript 或 jquery 水平滚动 div onclick

javascript - 如何更新 JSON 调用 URL onclick

javascript - 调用 iframe 中定义的 Javascript 函数

javascript - 将内容 append 到 Div,然后尝试向下滑动

javascript - Safari 6 中不显示下拉菜单

javascript - 表单提交 jquery 和 javascript 的区别

javascript - 转换 JavaScript 对象数组