【发布时间】:2018-11-05 03:09:24
【问题描述】:
我在一页上有两个自动完成输入字段,每个都调用不同的源。
第一个输入字段在页面加载时呈现。第二个自动完成输入字段在 ajax 调用中返回并驻留在引导模式窗口中。
第一个自动完成功能很好:
$("#IdOfFirstInputField").autocomplete({
source: (url),
minLength: 3,
select: function (event, ui) {
alert("It works...");
}
});
第二个输入字段位于具有 ui-front 类的引导模式中。
我正在绑定自动完成功能,因为它是返回的 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;。如果我通过所选浏览器中的检查器删除此类,我可以看到列表看起来非常好。
知道为什么在正确返回 JSON 响应后将 <ul> 元素设置为 display:none; 吗?
看起来第二个输入字段在我停止输入后立即失去焦点,导致生成的 <ul> 默认为 display:none;。
【问题讨论】:
-
display:none附有内联元素或它的任何类获得display:none属性? -
display:none;正在为<ul>元素本身设置。不适用于每个<li>元素。 -
你能在某处复制它吗?
-
您能否检查
ui-helper-hidden-accessible类是否没有与<ul>关联? -
我刚刚注意到,第二个输入字段在我停止输入后立即失去焦点,导致结果默认为
display:none;。
标签: javascript jquery autocomplete jquery-ui-autocomplete