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

时间:2014-08-17 20:38:43

标签: jquery

this jsfiddle snippet的目标是每次用户键入字符时,在<p/>中显示<input/>中输入的文字。它适用于<p/>总是落后一个字符的例外。这段代码出了什么问题?

jQuery代码:

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

1 个答案:

答案 0 :(得分:6)

按下键时,

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或退格和删除),这开始变得愚蠢。