我抓住输入字段的值:
$('#input').on("keydown", function(){
var city = $(this).val();
console.log(city);
});
当我输入' n'控制台没有返回任何内容,我输入' ne' ne它返回' n',键入' new'它返回' ne'
为什么会这样?
答案 0 :(得分:5)
它没有赶上它,它正在做它应该做的事情,就是在键盘被按下时显示控制台中的字母。 只有在释放按键后,输入框中才会显示一个字母,这就是您在下一次按键时看到它的原因。
您需要的是.keyup()事件:
$('#input').on("keyup", function(){
<强> DEMO 强>
答案 1 :(得分:3)
使用keypress事件代替keydown事件。
答案 2 :(得分:1)
试试这段代码,希望keyup能正常工作
$('#input').on("keyup", function(){
var city = $(this).val();
console.log(city);
});
答案 3 :(得分:1)
当用户第一次按下键盘上的键时,keydown事件被发送到元素。要确定按下了哪个键,请检查传递给处理函数的事件对象。
虽然浏览器使用不同的属性来存储此信息,但jQuery会规范化.which属性,以便您可以可靠地使用它来检索密钥代码。此代码对应于键盘上的键,包括特殊键(如箭头)的代码。
要捕捉实际的文字输入, .keypress()
可能是更好的选择。
答案 4 :(得分:1)
试试这段代码,希望它能为你效用
$("#input").keyup(function() {
console.log($(this).val());
});
答案 5 :(得分:0)
你必须使用keyup来获得你想要的东西
$('#input').on("keyup", function(){
var city = $(this).val();
console.log(city);
});
认为这就是你想要的
答案 6 :(得分:0)
正如我的评论所述,当按下键但在将键值添加到字段之前,会发生keydown事件。您可能希望阻止将密钥添加到字段中或实现某些快捷方式,此事件可能会这样做。
有关更完整的说明,请参阅JQuery Keyboard events部分