我已经检查了代码好几次了,但不明白为什么第一次击键似乎不算数。
当文本区域为空字符串时,计数器显示应该准确读取。不过好像textarea需要清空两次......
最佳答案
尝试听 keyup
而是事件。
keypress
当实际字符插入到文本区域时会触发该事件。当您读取文本区域的值时 - message.get('value')
, keypress
之前的旧值事件被返回。这解释了为什么计数器显示过时(不准确)的剩余字符数。
更多关于keydown
, keypress
,和keyup
事件:http://www.quirksmode.org/dom/events/keys.html
更新:
有更好的方法来检测 <input>
的更改和<textarea>
.
YUI event-valuechange
模块提供了 valuechange
event当用户通过以下方式更改输入值时触发:
- 输入一个简单的字符
- 输入多笔画字符
- 使用输入法编辑器
- 使用 Ctrl+X 或 Cmd+V 剪切或粘贴值
- 使用键盘调用的上下文菜单进行剪切或粘贴;或
- 从右键单击上下文菜单中剪切或粘贴。
以下是如何在 ID 为 message
的输入上使用它:
YUI().use('event-valuechange', function (Y) {
Y.one('#message').on('valueChange', function (e) {
// The value has changed! Handle it here...
});
});
关于Javascript/YUI 字符计数器减一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809415/