我正在使用JQuery 1.8.3和JQuery UI 1.8.24。JQuery UI自動完成:.data(...)未定義[但只有當我添加第二個自動完成框]
這是代碼,這工作得很好:
$(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;
感謝您的幫助!根據它應該是最新的文檔(v1.10.x):
在'return $(「li>/li>」)''中有無效的標記。這是一個錯字嗎?這肯定會造成問題。 –
是的,我知道。這只是因爲我不知道如何在stackoverflow.com上發佈HTML標籤。所以我決定刪除第一個「<」。 – Toby
@Toby:粘貼代碼,選擇它,然後按Ctrl + K. Tada! –