Javascript 输入值不为';使用jquery不能立即更改

Javascript 输入值不为';使用jquery不能立即更改,javascript,jquery,html,placeholder,Javascript,Jquery,Html,Placeholder,我正在创建一个jQuery占位符,该占位符的作用类似于不支持浏览器的chrome/firefox默认占位符,但我无法让占位符div的html更改速度与chrome/firefox默认占位符的更改速度一样快。它只有在我放开键或者你按下某个键时才会改变,只有当输入中至少有2个字符时才会改变。我怎样才能解决这个问题 占位符 输入{ 位置:绝对位置; 顶部:4px; 左:4px; 背景:透明; } #违约{ 顶部:30px; } #ph值{ 颜色:浅灰色; } window.onload=函数(){

我正在创建一个jQuery占位符,该占位符的作用类似于不支持浏览器的chrome/firefox默认占位符,但我无法让占位符div的html更改速度与chrome/firefox默认占位符的更改速度一样快。它只有在我放开键或者你按下某个键时才会改变,只有当输入中至少有2个字符时才会改变。我怎样才能解决这个问题


占位符
输入{
位置:绝对位置;
顶部:4px;
左:4px;
背景:透明;
}
#违约{
顶部:30px;
}
#ph值{
颜色:浅灰色;
}
window.onload=函数(){
$(“#txt”)
.按键(功能(){
如果($('#txt').val().length>0){
$('#ph').html('');
}否则{
$('#ph').html('自定义占位符');
}
})
.keyup(函数(){
如果($('#txt').val().length>0){
$('#ph').html('');
}否则{
$('#ph').html('自定义占位符');
}
});
}
自定义占位符
我不确定这是否会有那么大的不同,但是我做了一个小小的改变,用
按键来代替
按键
,从视觉上看,这与默认行为没有什么区别:

试试这个

不要附加html,尝试隐藏div。它可能会满足您的要求

 if($('#txt').val().length > 0){
                    $('#ph').hide();
                } else {
                    $('#ph').show();
                }

我只是做了同样的事,我看不出有什么不同,尽管它仍然有同样的问题。这不是什么大问题,但一直困扰着我,我自己也没能解决。我用定时器(setTimeout)解决了这个问题,但我不知道在这种情况下使用定时器是否是一种好的做法。
 if($('#txt').val().length > 0){
                    $('#ph').hide();
                } else {
                    $('#ph').show();
                }