我正在使用 JQuery 1.8.3 和 JQuery UI 1.8.24。
这是代码,效果很好:
$(function () {
$("#").autocomplete({
source: function (request, response) {
$.ajax({
url: '', type: "POST", dataType: "json",
data: { searchPattern: request.term },
cache: false,
success: function (data) {
response($.map(data, function (item) {
return { label: item.Label, value: item.Value, id: item.Id, description: item.Description }
}))
}
});
},
delay: 300,
minLength: 2,
autoFocus: true
})
.data("autocomplete")._renderItem = function (ul, item) {
return $("li>/li>")
.data("ui-autocomplete-item", item)
.append("a>" + item.label + "br>div style=\"font-size:x-small;font-style:italic;\">" + item.description + "/div>/a>")
.appendTo(ul);
};
});
但是,如果我在 HTML 中添加第二个文本框,复制上面的 JavaScript 并更改选择器和 url(所以最后我有两个自动完成文本框),那么第二个自动完成会出现以下错误:
TypeError: $(...).autocomplete(...).data(...) is undefined
使用一个自动完成功能,它可以完美运行,但第二个不是,我无法解释原因。有人可以帮助我吗?
提前致谢!
托比
编辑:
我发现了问题。
JavaScript 代码位于 *.js 文件中,两个文本框位于两个不同的 *.thml 文件中。
所以一次只有一个文本框,这就是问题所在。
现在我在 *.html 文件中执行最后一部分(使用数据(...)),它工作正常:
$("#selector").autocomplete().data("autocomplete")._renderItem = renderItem;
感谢您的帮助!