jQuery自动完成列表设置为display:none;

问题描述 投票:3回答:2

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

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

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

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

第二个输入字段位于具有类qazxsw poi的引导模式中。

我正在绑定自动完成,因为它是返回的ajax调用的一部分:

ui-front

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

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

虽然第一个自动完成工作正如预期的那样,但第二个自动完成工作仅适用于将.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; } 和list项目附加到DOM的点。然而,<ul>的风格设置为<ul>。如果我通过选择的浏览器中的检查器删除此类,我可以看到该列表看起来非常好。

在正确返回JSON响应后,为什么display:none;元素被设置为<ul>的任何想法?

在我停止输入后,看起来第二个输入字段正在失去焦点,导致生成的display:none;默认为<ul>

javascript jquery autocomplete jquery-ui-autocomplete
2个回答
0
投票

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

虽然这个解决方案对我的案例非常具体,但希望这个简短的说明对于遇到jQuery自动完成问题但未正确显示列表的人仍然有用:-)


-1
投票

花了几个小时寻找...本地这些图书馆只附加到身体。找到的工作解决方案是,为您的表格案例设置一个类而不是set.display:none;

this examples works like a charm

© www.soinside.com 2019 - 2024. All rights reserved.