【发布时间】:2016-02-08 22:06:24
【问题描述】:
我正在尝试使用 javascript 获取 textarea 的字符,当您在 textarea 中输入文本时它可以正常工作,但是当您使用退格时,它会给出错误的字符长度。
<textarea id = 'textarea' onkeydown = "adjust()"></textarea>
<script>
function adjust() {
var length = document.getElementById("textarea").value.length+1;
alert("length: "+length);
} //end of function adjust()
</script>
例如:
比方说,你在textarea中有25个字符的时候开始。然后当你使用退格一次时:
提示:26 个字符; 再次使用退格,它会提示:25 个字符; 然后,24、23、22、21。
这不是真的,因为它应该显示 24、23、22、21、20 和 19。为什么会这样,我们将如何解决?
【问题讨论】:
-
当函数
adjust被调用时,退格默认行为(即删除前一个字符)尚未应用。所以第 25 个字符仍然存在,并且在“调整”函数中,您在删除第 25 个字符之前将长度加一。 -
@DPac 哦。我知道了。所以它在删除字符之前调用函数。该死。我们将如何解决这个问题?
-
尝试“keyup”。或“输入”事件。请注意,当用户通过鼠标或编辑菜单更改字段时,不会触发键事件。
-
P. S. 对于“keydown”,给您带来问题的不仅仅是退格键:对于 any 键,该字段的值不会立即更改,这就是为什么您的 adjust() 函数必须在第一名。按 ctrl 或 shift 也会弄乱你的计数。
标签: javascript jquery char textarea