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

时间:2013-09-04 03:12:13

标签: jquery

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

http://jsfiddle.net/AstRc/

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

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

我只看到它在第二个keydown印刷机上烧,而不是第一个。

3 个答案:

答案 0 :(得分:3)

当触发keydown事件时,文本框中的值尚未更改。看起来你正在寻找input event(使用'input keyup'来实现向后兼容)。 Updated fiddle

答案 1 :(得分:1)

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

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

答案 2 :(得分: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