jQuery:keydown复制一个字符后的文本

jQuery:keydown复制一个字符后的文本,jquery,Jquery,的目标是在用户每次键入字符时在中显示在中输入的文本。除了总是落后一个字符外,它还能工作。这个代码怎么了 jQuery代码: var $input = $('<input />'); $('body').append($input); var $p = $('<p/>'); $('body').append($p); $input.keydown(function() { $p.text ($input.val()); }); var$input=$(''); $

的目标是在用户每次键入字符时在

中显示在
中输入的文本。除了

总是落后一个字符外,它还能工作。这个代码怎么了

jQuery代码:

var $input = $('<input />');
$('body').append($input);
var $p = $('<p/>');
$('body').append($p);
$input.keydown(function() {
    $p.text ($input.val());
});
var$input=$('');
$('body')。追加($input);
var$p=$(“

”); $('body')。追加($p); $input.keydown(函数(){ $p.text($input.val()); });


keydown
在按键时触发,然后在使用按键更新值之前触发。您可能希望改用
keyup()

$input.keyup(function() {
    $p.text ($input.val());
});
或简化为:

$input.keyup(function() {
    $p.text (this.value);
});
您还可以手动附加最后一个字符(只要最后一次按键不是退格或删除,此操作有效:

$input.keydown(e){
    $p.val( this.value + String.fromCharCode(e.which));
});
但是,坦率地说,当您必须考虑特殊字符(使用shift、ctrl、alt或backspace和delete)时,这就开始变得愚蠢了