【发布时间】:2017-12-12 03:36:15
【问题描述】:
$(document).ready(function() {
$('#input').focusin(function() {
if ($(this).val() != '') {
$('#div').show();
} else {
$('#div').hide();
}
$('#input').keyup(function() {
// If not empty value, show div
if ($(this).val() != '') {
$('#div').show();
} else {
$('#div').hide();
}
});
});
$('#input').focusout(function() {
$('#div').hide();
});
});
#div {
display: none;
position: absolute;
bottom: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='div'>
<a href='website.com'>Link From AJAX<a>
<a href='website.com'>Link From AJAX<a>
<a href='website.com'>Link From AJAX<a>
</div>
<input id='input' type='text'>
在这个 jquery 代码中,#div 显示当我在#input 中输入内容时,但如果我尝试点击#div,它就会消失并且链接不起作用,
如果我只点击#div 或#input,我如何保持#div 显示,但外面的任何东西都会像往常一样隐藏它?
问题是由于CSS 中的position: absolute; bottom 20px 行引起的。
更新了代码,在.focusin function之后添加if语句后突然按预期工作,对于之前的错误解决方案,删除CSS中的position and bottom
【问题讨论】:
-
在另一个事件处理程序中绑定一个事件处理程序几乎总是错误的。每次焦点进入输入时,您都会复制 keyup 处理程序。
-
@Barmar 我解决了我在更新中所说的问题,但是在添加
AJAX代码后我遇到了同样的问题,关于重复,我希望你能解释一下,因为有时如果我@ 987654337@input又返回了,div好像有新值或者刷新了自己,是这个意思吗?如果是的话,我也希望有办法解决这个问题。 -
不要将解决方案放在问题中,将其作为答案发布。
-
@Barmar 这是已解决的问题的旧版本,我说吗?
-
我不明白 AJAX 调用将如何阻止
$("#div").hide()在输入失去焦点时发生。
标签: javascript jquery css ajax