javascript - jQuery 自动完成列表设置为显示 :none;

标签 javascript jquery autocomplete jquery-ui-autocomplete

我在一页上有两个自动完成输入字段,每个字段调用不同的源。

第一个输入字段在页面加载时呈现。第二个自动完成输入字段在 ajax 调用上返回,并驻留在引导模式窗口中。

第一个自动完成工作正常:

$("#IdOfFirstInputField").autocomplete({
    source: (url),
    minLength: 3,
    select: function (event, ui) {
        alert("It works...");
    }
});

第二个输入字段位于具有类 ui-front 的 bootsrap 模式中。 .

我这样绑定(bind)自动完成,因为它是返回的 ajax 调用的一部分:

$(document).on("keydown.autocomplete", "#IdForSecondInput", function () {
    $(this).autocomplete({
        source: (url2),
        minLength: 3,
        select: function (event, ui) {
            alert("It works...");
        }
    });
});

这些自定义 CSS 样式将应用于两个自动完成输入字段:

.ui-autocomplete {
    position: absolute;
    z-index: 1000;
    cursor: default;
    padding: 0;
    margin-top: 2px;
    list-style: none;
    background-color: #ffffff;
    border: 1px solid #ccc
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
    max-height: 300px;
    overflow-y: auto;
    overflow-x: hidden;
}
.ui-autocomplete > li {
    padding: 3px 20px;
}
.ui-autocomplete > li.ui-state-focus {
    background-color: #DDD;
}
.ui-helper-hidden-accessible {
    display: none;
}

虽然第一个自动完成功能按预期工作,但第二个自动完成功能仅适用于<ul>和列表项被附加到 DOM。不过<ul>的风格设置为display:none; 。如果我通过所选浏览器中的检查器删除此类,我可以看到该列表看起来非常正常。

有什么想法为什么 <ul>元素设置为 display:none; JSON 响应正确返回后?

在我停止输入后,第二个输入字段似乎失去了焦点,导致结果 <ul>默认为 display:none; .

最佳答案

正如问题中所暗示的,问题确实是自动完成输入字段失去了焦点。由于自动完成输入字段是在模态窗口中检索的,因此它触发了一个 jQuery 函数,该函数将焦点放在模态窗口外部的输入字段上。

虽然这个解决方案非常适合我的情况,但希望这篇简短的说明仍然对遇到 jQuery 自动完成无法正确显示列表问题的人有所帮助:-)

关于javascript - jQuery 自动完成列表设置为显示 :none;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50533913/

相关文章:

javascript - 使用ajax调用php函数

javascript - 通过 "request.querystring"从包含的 html 文件中检索参数

javascript - 动态聚焦模糊内容可编辑

php - 使用 Jquery 删除逗号

javascript - Bootstrap typeahead 中的多项选择

JQuery 自动完成隐藏字段

javascript - Javascript中多变量赋值的正确方法

javascript - 外部接口(interface)回调未定义 AS3

asp.net - 单击时禁用按钮

jQuery UI 自动完成自定义对象作为源而不是字符串数组