按键上的Javascript事件,但在输入字符后

alt*_*alt 1 javascript keyboard jquery

所以我正在对文本字段进行字符计数.我需要更新按键上的字符数(不是键盘).问题是,使用jquery的.keydown()方法,它会在输入字符之前刷新计数器,因此计数器始终是实际计数后面的1键.如何在按键时更改计数,但是等待输入字符?

谢谢!

Boj*_*les 9

.keyup()改用.当键被释放时触发,因此计数器将递增.

从文档:

当用户在键盘上释放键时,键盘事件被发送到元素.它可以附加到任何元素,但事件仅发送到具有焦点的元素.

您以与任何其他事件相同的方式使用它:

$('input').keyup(function(e) {
    var text = $(this).val();
    console.log(text.length);
});
Run Code Online (Sandbox Code Playgroud)

确保计算文本框中的字符数(如上例所示),而不是按下的键数.例如,按Ctrl+ C将导致计算两个额外字符,但实际上没有输入任何字符.


如果您使用的是jQuery 1.7+,请使用.on():

$('input').on('keyup', function(e) {
    // Do your magic
});
Run Code Online (Sandbox Code Playgroud)

  • 我强烈建议您检查`Input`或`TextArea`的实际值,因为[CTRL] + [C]最有可能超过一个字符. (3认同)

Eri*_*ric 9

setTimeout 似乎在这里工作:

$('input').keydown(function(e) {
    var $this = $(this);
    setTimeout(function() {
        var text = $this.val();
        console.log(text.length);
    }, 0);
});
Run Code Online (Sandbox Code Playgroud)