我已经看了好几次代码,不明白为什么第一次按键似乎不算数。
当文本区域为空字符串时,计数器显示的读数应准确。但文本区域似乎需要清空两次。。。。。。。
http://jsfiddle.net/ndreckshage/zVQZR/
请尝试侦听keyup
事件。
当实际字符插入文本区域时,会触发keypress
事件。当您读取文本区域的值——message.get('value')
时,会返回keypress
事件之前的旧值。这就解释了计数器显示的剩余字符数过时(不准确)的原因。
有关keydown
、keypress
和keyup
事件的详细信息:http://www.quirksmode.org/dom/events/keys.html
更新:
有一种更好的方法来检测<input>
和<textarea>
的变化。
YUIevent-valuechange
模块提供一个valuechange
事件,当用户通过以下方式更改输入值时会触发:
- 键入一个简单字符
- 键入多笔划字符
- 使用输入法编辑器
- 使用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...
});
});
现场演示:http://jsfiddle.net/Pd9X9/
更改为keyup
事件,它在这里对我来说很好:http://jsfiddle.net/jfriend00/grZW7/.按键事件只发生在某些按键上,可能发生在字段文本更新之前,而keyup
总是发生在更新之后。
使用"keyup"作为事件触发器