0
我的目標是建立一個基於當前輸入從SQL數據庫中提取的自動完成元素。這是必要的,因爲被搜索的元素數量遠遠超過了json解串器的最大容量。jQuery UI自動完成與deferred.promise()不兼容?
我有這個smartAutoComplete插件工作,但我想鞏固和使用jQuery UI自動完成插件。看起來,插件在我的源代碼函數返回任何內容之前調用._renderMenu,並且沒有任何內容被添加到頁面主體。我在使用smartAutoComplete時使用deferred.promise()修復了這個問題,但jQuery UI似乎並不喜歡這個解決方案。有小費嗎?謝謝!
$("input#punch_box").autocomplete({
source: function (request, response) {
var dfd = new jQuery.Deferred();
var resArr = [];
MyAjax({
url: '../GetMemberFiltered',
data: { search_string: request.term },
success: function (data, status) {
$(data).each(function (indx, result) {
resArr.push({ value: result.first_name + " " + result.last_name + " " + result.email,
member_id: result.member_id
});
});
dfd.resolve(resArr);
}
});
return dfd.promise();
},
delay: 200
});
function monkeyPatchAutocomplete() {
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function (ul, item) {
alert(item.value);
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.value + "</a>")
.appendTo(ul);
};
};