gpt4 book ai didi

javascript - jQuery 自动完成渲染项目未执行

转载 作者:数据小太阳 更新时间:2023-10-29 03:51:34 27 4
gpt4 key购买 nike

我在同一个 HTML 上有两个使用相同自动完成功能的文本框(输入类型文本)。第一个文本框工作正常,但第二个文本框不呈现结果。它与服务器通信,我得到了结果,但甚至没有调用渲染函数。输入之间的唯一区别是,一个位于开始隐藏的 div 中,我通过设置高 z 顺序并屏蔽 HTML 来显示类似于对话框窗口。

这是第二个输入框所在的 div 的 CSS。

   .windowBooking  {
position:absolute;
width:450px;
/* height:200px; */
display:none;
z-index:9999;
padding:20px;
}

自动完成功能:

$(".makeClass").autocomplete({
source: function (request, response) {
$('#Code').val(); //clear code value
$.ajax({
url: "myUrl",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: 'json', //What kind of Result is expected. (Ex json, xml, etc)
data: "{'searchItem':'" + request.term + "'}",
success: function (data) {
var item = [];
var len = data.d.length;
for (var i = 0; i < len; i++) {
var obj = { name: data.d[i].MakeReport, code: data.d[i].MakeCode };
item.push(obj);
}
response(item);
}
})
},
focus: function (event, ui) {
$(this).val(ui.item.name);
return false;
},
select: function (event, ui) {
$('#Code').val(ui.item.code);
$('#Name').val(ui.item.name);
$(this).val(ui.item.name);
return false;
},
open: function () {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function () {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
},
minLength: 2,
delay: 250
}).data("autocomplete")._renderItem = function (ul, item) {
var temp = item.name;
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.name + "</a>")
.appendTo(ul);
};

输入框使用相同的类来调用自动完成。

  <input id="OtherMake" type="text" maxlength="30" size="20" class="makeClass"/> <!-- It works -->

<div id="dialogPlus" class="windowBooking">
:
<input type="text" id="MakeName" class="makeClass" /> <!-- doesn't work.-->
:
</div>

任何想法,为什么在一个输入框上渲染而在另一个输入框中不渲染?让我说清楚,在第二个输入框上,唯一不起作用的是 renderItem 函数,由于某种原因它没有被执行。在屏幕上,您可以看到很多未定义的值,但如果您选择任何未定义的值,输入框就会填充正确的值。

最佳答案

我在类选择器上应用 _renderItem() 时遇到了类似的问题,但用

解决了它
$.each($( ".makeClass" ), function(index, item) {
$(item).data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.value + " - " + item.label + "</a>")
.appendTo(ul);
};
});

关于javascript - jQuery 自动完成渲染项目未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205699/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com