Javascript未关闭菜单
我有一段JavaScript,我用它来搜索我的网站。当您在搜索中键入时,它会调出与您查询的产品相匹配的产品。这很好,但我希望在用户单击页面时关闭下拉列表。我对JavaScript知之甚少,因此任何建议,甚至是正确方向上的一点,都将不胜感激Javascript未关闭菜单,javascript,jquery,hidden,Javascript,Jquery,Hidden,我有一段JavaScript,我用它来搜索我的网站。当您在搜索中键入时,它会调出与您查询的产品相匹配的产品。这很好,但我希望在用户单击页面时关闭下拉列表。我对JavaScript知之甚少,因此任何建议,甚至是正确方向上的一点,都将不胜感激 function showSmartSearch() { $.ajax({ url: "index.php?route=product/ajaxsearch&search=" + $("input[name='search']"
function showSmartSearch() {
$.ajax({
url: "index.php?route=product/ajaxsearch&search=" + $("input[name='search']").val(),
type: "GET",
success: function(e) {
$("#smartsearchdiv").css("display", "block");
var t = "";
$("#smartsearchdiv").html(e)
}
})
}
function hideSmartSearch() {
$("#smartsearchdiv").css("display", "none")
}
var wait;
$(document).ready(function() {
$("input[name='search']").after('<div id="smartsearchdiv" style="margin-top:30px;background:white;width:230px;position:absolute;z-index:999;"></div>').blur(function() {}).keydown(function(e) {
if ($("input[name='search']").length && e.which == 38) {
e.preventDefault();
return false
}
}).keyup(function(e) {
if (!$("input[name='search']").val()) {
$("#smartsearchdiv").css("display", "none")
}
var t = $("input[name='search']").val();
var n = t.length;
if (t.replace(/^\s+|\s+$/g, "") && (e.which == 8 || 47 < e.which && e.which < 112 || e.which > 185)) {
if (n > 0) {
showSmartSearch()
} else {
hideSmartSearch()
}
}
if ($("#smartsearchdiv li").length && (e.which == 38 || e.which == 40)) {}
}).blur(function() {})
});
function hideSmartSearch() {
$("#smartsearchdiv").css("display", "none");
}
函数showSmartSearch(){
$.ajax({
url:“index.php?route=product/ajaxsearch&search=“+$(“输入[name='search']”)val(),
键入:“获取”,
成功:职能(e){
$(“#smartsearchdiv”).css(“显示”、“块”);
var t=“”;
$(“#smartsearchdiv”).html(e)
}
})
}
函数hideSmartSearch(){
$(“#smartsearchdiv”).css(“显示”、“无”)
}
var等待;
$(文档).ready(函数(){
$(('input[name='search'])。在('').blur(function(){}).keydown(function(e)之后{
if($((“输入[name='search'])).length&&e.which==38){
e、 预防默认值();
返回错误
}
}).keyup(功能(e){
if(!$(“输入[name='search']”)val(){
$(“#smartsearchdiv”).css(“显示”、“无”)
}
var t=$(“输入[name='search']”)val();
var n=t.长度;
如果(t.replace(/^\s+|\s+$/g,“)&&(e.which==8 | | 47185)){
如果(n>0){
showSmartSearch()
}否则{
hideSmartSearch()
}
}
if($(“#smartsearchdiv li”).length&(e.which==38 | e.which==40)){
}).blur(函数(){})
});
函数hideSmartSearch(){
$(“#smartsearchdiv”).css(“显示”、“无”);
}
使用以下方法:
$("#smartSearchDiv").click(function(e){
e.stopPropagation();
});
$(body).click(function(){
if($("#smartSearchDiv").is(":visible")){
hideSmartSearch();
}
});
这样,如果您单击搜索div,事件将停止向其父级传播,并且不会发生任何事情。否则,它将进入您的身体
并启动关闭功能。您可以尝试以下操作:
$(document).click(function(e){ // hide list if clicked outside
if($(e.target).is('#smartSearchDiv, #smartSearchDiv *'))return;
hideSmartSearch();
});
还包括:
$(document).click(function(e){ // hide list if clicked outside
if(!$(e.target).is('#smartSearchDiv'))
hideSmartSearch();
});
可能重复的