我已经检查了几次代码,但无法弄清楚为什么第一次击键似乎不算数。
当 textarea 为空字符串时,计数器显示应准确读取。但似乎textarea需要为空两次......
我已经检查了几次代码,但无法弄清楚为什么第一次击键似乎不算数。
当 textarea 为空字符串时,计数器显示应准确读取。但似乎textarea需要为空两次......
尝试收听keyup
事件。
keypress
当实际字符被插入到文本区域时触发该事件。当您读取 textarea — 的值时,将返回事件之前的message.get('value')
旧值。这就解释了为什么计数器显示剩余的字符数过时(不准确)。keypress
更多关于keydown
、keypress
和keyup
事件:http ://www.quirksmode.org/dom/events/keys.html
更新:
有一种更好的方法来检测<input>
和的变化<textarea>
。
YUIevent-valuechange
模块提供了一个在用户通过以下方式更改输入值时触发的valuechange
事件:
以下是如何在带有 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/。keypress 事件仅发生在某些键上,并且可能在字段文本更新之前发生,而keyup
之后总是发生。
使用 'keyup' 作为事件触发器