Javascript 显示一个div并在单击它时使其保持show()

Javascript 显示一个div并在单击它时使其保持show(),javascript,jquery,css,ajax,Javascript,Jquery,Css,Ajax,$(文档).ready(函数(){ $(“#输入”).focusin(函数(){ if($(this.val()!=“”){ $('#div').show(); }否则{ $('#div').hide(); } $('#input').keyup(函数(){ //如果不是空值,则显示div if($(this.val()!=“”){ $('#div').show(); }否则{ $('#div').hide(); } }); }); $(“#输入”).focusout(函数(){ $('

$(文档).ready(函数(){
$(“#输入”).focusin(函数(){
if($(this.val()!=“”){
$('#div').show();
}否则{
$('#div').hide();
}
$('#input').keyup(函数(){
//如果不是空值,则显示div
if($(this.val()!=“”){
$('#div').show();
}否则{
$('#div').hide();
}    
});
});
$(“#输入”).focusout(函数(){
$('#div').hide();
});
});
#div{
显示:无;
位置:绝对位置;
底部:20px;
}

来自AJAX的链接
来自AJAX的链接
来自AJAX的链接

您可以通过使用标志禁用
聚焦输出处理程序的效果:
var noHide=false;
$(文档).ready(函数(){
$('#input').keyup(函数(){
//如果不是空值,则显示div
if($(this.val()!=“”){
$('#div').show();
}否则{
$('#div').hide();
}
});
$('a分区')。悬停(
函数(){noHide=true;},
函数(){noHide=false;$('#输入').focus();}
);
$(“#输入”).focusout(函数(){
如果(!noHide){
$('#div').hide();
}
});
});
#div{
显示:无;
}

当模糊输入时,检查当前活动元素是否为DIV,如果不是,则将其隐藏

此外,如果要绝对定位某个元素,则需要给它一个z索引,以便可以单击它。否则,单击将发送到该位置的正常定位图元

$(文档).ready(函数(){
$('#输入')。焦点(函数(){
if($(this.val()!=“”){
$('#div').show();
}否则{
$('#div').hide();
}
}).blur(函数(){
如果(!$(“#div”)是(“:焦点,:活动”)){
$(“#div”).hide();
}
});
$('#input').keyup(函数(){
//如果不是空值,则显示div
if($(this.val()!=“”){
$('#div').show();
}否则{
$('#div').hide();
}
var search=$('#input').val();
$.post('search.php'{
搜索:搜索
},函数(数据){
$('#div').html(数据);
});
});
});
#div{
显示:无;
位置:绝对位置;
底部:20px;
z指数:2;
}


将一个事件处理程序绑定到另一个事件处理程序中几乎总是错误的。每次focus输入输入时,您都会复制keyup处理程序。@Barmar我解决了更新中所述的问题,但在添加
AJAX
代码后,我也遇到了同样的问题,我希望您能解释一下,因为有时如果我
focusedout
输入并返回到它,
div
似乎有一个新值或刷新了自身,这是您的意思吗?如果是,我也希望找到一种解决方法。不要将解决方案放在问题中,将其作为答案发布。@Barmar这是解决问题的旧版本,是吗?我不知道AJAX调用如何防止输入失去焦点时发生
$(“#div”).hide()
。您的答案对第一个问题非常有效,但是,正如我在更新中解释的那样,添加
if
语句是有效的,但是现在出现了一个新问题,我希望您检查一下。是的,现在理解了,关于您提到的两个主题。我更新了问题,问题似乎是
位置:绝对;底部20pxCSS
中的code>。