0

我已经检查了几次代码,但无法弄清楚为什么第一次击键似乎不算数。

当 textarea 为空字符串时,计数器显示应准确读取。但似乎textarea需要为空两次......

http://jsfiddle.net/ndreckshage/zVQZR/

4

3 回答 3

2

尝试收听keyup事件。

keypress当实际字符被插入到文本区域时触发该事件。当您读取 textarea — 的值时,将返回事件之前message.get('value')旧值。这就解释了为什么计数器显示剩余的字符数过时(不准确)。keypress

更多关于keydownkeypresskeyup事件: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/

于 2012-10-09T22:45:42.787 回答
1

更改为keyup事件,它在这里对我来说很好:http: //jsfiddle.net/jfriend00/grZW7/。keypress 事件仅发生在某些键上,并且可能在字段文本更新之前发生,而keyup之后总是发生。

于 2012-10-09T22:51:02.927 回答
0

使用 'keyup' 作为事件触发器

于 2012-10-09T22:53:58.613 回答