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