javascript - 隐藏当 document.click 时,显示当搜索框点击时(php mysql)
当搜索框点击时(php mysql)
问题描述
我有一个从 MySQL 数据库动态填充的搜索框。当用户键入内容时,它将搜索数据库并使用 jquery,并使用 ajax 显示搜索结果。因为搜索结果通过 z-index 设置了显示优先级,所以搜索结果显示在其他表单元素的顶部。所以我正在做的是当用户点击文档时,显示搜索结果(如果有的话)将被隐藏。然后,当用户返回开始再次在搜索框中输入时,它会再次显示。
然而,我面临的问题是我的代码的最后一部分,当用户单击 results 中的 p.result 项目时,它应该获取 p.result 并将其放入 . 点击 p.result 后,什么也没有发生。结果未插入到输入字段中。
<script type="text/javascript">
$(document).ready(function(){
$('.search-box input[type="text"]').on("keyup input", function(){
/* Get input value on change */
var inputVal = $(this).val();
var resultDropdown = $(this).siblings(".result");
if(inputVal.length){
$.get("backend-search.php", {term: inputVal}).done(function(data){
// Display the returned data in browser
resultDropdown.html(data);
});
$(".search-box").click(function(e){
$(".result").show();
e.stopPropagation();
});
$(document).click(function(){
$(".result").hide();
});
} else{
resultDropdown.empty();
}
});
$('.result').on("click", ".result p", function(){
$(this).parents(".search-box").find('input[type="text"]').val($(this).text());
$(this).parent(".result").empty();
});
});
</script>
</head>
<body>
<div class="search-box">
<input type="text" autocomplete="off" placeholder="Search country..." />
<div class="result"></div>
</div>
</body>
请注意,其他一切工作正常。从上面删除以下代码后,它工作正常。
$(".search-box").click(function(e){
$(".result").show();
e.stopPropagation();
});
$(document).click(function(){
$(".result").hide();
});
.result 是结果框 div 容器 .search-box 是包含所有内容的 div 容器。
如果有人有任何想法可以帮助我解决这个问题,我将不胜感激。
解决方案
推荐阅读
- java - 西装运行期间空指针异常
- javascript - Material-UI,如何在打字稿中将多种样式与主题合并?
- c - C 编程 2D 数组内存布局
- git - 我应该在我的 git 存储库中保留多少 Gradle 固定装置?
- zend-db - 在选择中使用通配符的字符串
- angular - 在没有链接模块的库的情况下运行 Angular 应用程序
- android - GSON“嵌套”解串器
- hyperledger-fabric - 具有 SOFTHSM 的 Hyperledger Fabric
- sql - 使用 SqlCommand 的 VB Win 表单问题
- node.js - Maven ERR_INVALID_CALLBACK(