Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动完成关闭错误_Javascript_Jquery_Jquery Ui_Jquery Autocomplete - Fatal编程技术网

Javascript 自动完成关闭错误

Javascript 自动完成关闭错误,javascript,jquery,jquery-ui,jquery-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Autocomplete,我对jQueryUIAutoComplete的close参数有一个问题 基本上,当关闭参数中的代码处于打开状态时,如果我单击一个链接,则自动完成将消失,但链接不会触发 如果我删除代码,它就可以正常工作 JS通过JS Lint正常运行,没有控制台错误 有人有什么想法吗 $('.mega-menu-search').autocomplete({ source: window.searchTA.split(','), select: function( event, ui ) {

我对jQueryUIAutoComplete的close参数有一个问题

基本上,当关闭参数中的代码处于打开状态时,如果我单击一个链接,则自动完成将消失,但链接不会触发

如果我删除代码,它就可以正常工作

JS通过JS Lint正常运行,没有控制台错误

有人有什么想法吗

$('.mega-menu-search').autocomplete({
    source: window.searchTA.split(','),
    select: function( event, ui ) {
        megaMenuSearchAbort();
        megaMenuSearchTimeAndGo();
        lastSearch = $(this).val(); 
    },
    close: function(event, ui ) {
        // This is the troublesome code
        if($("#mega-menu-search-results").css("padding-top") !="0px") {
            $("#mega-menu-search-results").css("padding-top", "0px");
        }
    }
}).autocomplete("widget").addClass("mega-menu-autocomplete");   
好吧,我找到了解决办法

我猜在运行close参数中的任何函数后,autocomplete都必须返回false或停止传播

在下面的代码中,我删除了原始代码中多余的if语句,尽管即使保留了它,这个修复仍然有效

$('.mega-menu-search').autocomplete({
    source: window.searchTA.split(','),
    select: function( event, ui ) {
        megaMenuSearchAbort();
        megaMenuSearchTimeAndGo();
        lastSearch = $(this).val(); 
    },
    close: function(event, ui ) {

        // Changed code
        if(e.target.nodeName != 'A') {
            $("#mega-menu-search-results").css("padding-top", "0px");
        }
        //

    }
}).autocomplete("widget").addClass("mega-menu-autocomplete");

如果要将
padding top
设置为零(如果它不是零),那么为什么要将其封装为
If
,而不是将其设置为零?(您是否确实检查了从
$(“#mega menu search results”).css(“padding top”)
返回的值,如果它实际上就是字符串
“0px”
?)非常好的一点,这是我以前的一些代码的遗留问题。如果我删除If语句,问题仍然存在。你所说的“链接未触发”是什么意思?链接不会去任何地方,只会出现自动完成弹出窗口消失。如果您再次单击它,它就会工作。但是,当你浏览链接时,你会得到一个指针,url显示在浏览器的左下角,因此它肯定是一个可单击的元素。如果单击了链接,我应该添加这项功能来阻止事件发生。这修复了我的特定场景,如果您想做其他事情,就必须进行扩展。