jQuery.val()忽略输入的第一个字符

jQuery.val()忽略输入的第一个字符,jquery,input,addeventlistener,event-listener,Jquery,Input,Addeventlistener,Event Listener,我有一个输入和一个标签。我想在用户在输入框中键入任何内容时显示标签。但是,正如您在代码段(或on)中看到的,您在输入框中键入的第一个字符将被忽略,您需要键入另一个字符,以使值不为空 $('input')。在('change paste keydown',函数(事件)上{ var inputID=event.target.id; var值=$('#'+inputID).val(); $('#'+inputID+'Label').css('visibility','visible'); 如果(值=

我有一个输入和一个标签。我想在用户在输入框中键入任何内容时显示标签。但是,正如您在代码段(或on)中看到的,您在输入框中键入的第一个字符将被忽略,您需要键入另一个字符,以使值不为空

$('input')。在('change paste keydown',函数(事件)上{
var inputID=event.target.id;
var值=$('#'+inputID).val();
$('#'+inputID+'Label').css('visibility','visible');
如果(值=“”){
$('#'+inputID+'Label').css('visibility','hidden');
}
})
#input1Label{visibility:hidden;}

标签

输入

keydown
,顾名思义,它会在键被提起之前触发,对您来说至关重要的是,在值被更新之前触发

input
不仅可以覆盖当前正在侦听的所有三个事件,还可以在值更新后触发,这意味着您将获得最新的值

$('input').on('input', event => {
    let inputID = event.target.id;
    $('#'+inputID+'Label').css('visibility', $('#'+inputID).val() ? 'visibile' : 'hidden');
})

keydown
是在
输入值更改之前触发的,这就是您第一次获得空
值的原因

您应该将其更改为
keyup
事件,该事件在释放钥匙后触发

$('input')。在('change paste keyup',函数(事件)上{
var inputID=event.target.id;
var值=$('#'+inputID).val();
$('#'+inputID+'Label').css('visibility','visible');
如果(值=“”){
$('#'+inputID+'Label').css('visibility','hidden');
}
})
#输入1标签{
可见性:隐藏;
}

标签

keydown
在更改输入值之前被触发,因此
value
在第一次
keydown
时为空。