我正在尝试使用 jQuery 设置自动完成搜索表单。
我想在字段未聚焦时隐藏搜索结果 div,但是如果有人尝试单击结果中的链接,他们将无法点击,因为它会立即隐藏,因为搜索字段失去了焦点。
这是代码:
HTML:
<form>
<input type='search' id='search' placeholder='search' />
</form>
<div id='search-results' style='display:none'>
<ul>
<li><a href='#'>Example Result</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript
$("#search").keyup(function() {
query = $(this).val();
if(query.length > 2) {
$("#search-results").html(get_search_results(query)).show();
} else {
$("#search-results").hide();
}
});
$("#search").focus(function() {
if($(this).val().length > 2) {
$("#search-results").show();
}
});
$("#search").blur(function() {
$("#search-results").hide(); //makes it impossible to click results
});
Run Code Online (Sandbox Code Playgroud)
如何在不使用时隐藏结果,但仍然可以点击它们?
小智 5
我建议设置一个函数来检查鼠标是否在搜索结果 div 上。像这样。
// Have a global variable
var hovered = false;
Run Code Online (Sandbox Code Playgroud)
然后有一个在翻转时改变它的功能
$("#search-results").bind("mouseover",function() {
hovered = true;
}).bind("mouseout",function() {
hovered = false;
});
Run Code Online (Sandbox Code Playgroud)
然后在您的函数中检查变量是否为真
$("#search").blur(function() {
if(!hovered) {
$("#search-results").hide();
}
else {
$("#search-results").bind("mouseup",function() {
$("#search-results").hide();
})
}
});
Run Code Online (Sandbox Code Playgroud)
希望有帮助
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |