1

为什么不jQuery.keydown触发我输入的第一个字母?

http://jsfiddle.net/AstRc/

<input id="foo" type="text">
<div></div>

$("#foo").on('keydown', function(e){
    $("div").text(this.value);
});

我只看到它在第二次按键时触发,而不是第一次。

4

3 回答 3

3

触发事件时keydown,文本框中的值尚未更改。看来您无论如何都在寻找该input事件'input keyup'(用于向后兼容)。更新的小提琴

于 2013-09-04T03:14:59.170 回答
1

我不确定您是否正在寻找解决方案,但您可以使用:

$("#foo").on('keyup', function(e){
    $("div").text(this.value);
});
于 2013-09-04T03:15:59.090 回答
0

如果你真的需要在keydown事件中进行更新,你可以从看起来像这样的东西开始,但在很多情况下这不会按预期工作。您将不得不使用 e.keyCode 值管理许多异常

$("#foo").on('keydown', function(e){
    var content = $("div").text();
    $("div").text(content+String.fromCharCode(e.keyCode));
    if (e.keyCode==8) { $("div").text(content.slice(0,-1)); }
});

JSFIDDLE

于 2013-09-04T03:43:58.313 回答