Javascript未关闭菜单

Javascript未关闭菜单,javascript,jquery,hidden,Javascript,Jquery,Hidden,我有一段JavaScript,我用它来搜索我的网站。当您在搜索中键入时,它会调出与您查询的产品相匹配的产品。这很好,但我希望在用户单击页面时关闭下拉列表。我对JavaScript知之甚少,因此任何建议,甚至是正确方向上的一点,都将不胜感激 function showSmartSearch() { $.ajax({ url: "index.php?route=product/ajaxsearch&search=" + $("input[name='search']"

我有一段JavaScript,我用它来搜索我的网站。当您在搜索中键入时,它会调出与您查询的产品相匹配的产品。这很好,但我希望在用户单击页面时关闭下拉列表。我对JavaScript知之甚少,因此任何建议,甚至是正确方向上的一点,都将不胜感激

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();
});
可能重复的