快速的解釋:我有3個輸入FIRST_NAME,姓氏和contact_number。他們都有類名自動完成。例如多輸入jQuery的自動完成_renderItem問題觸發自動完成
<input type="input" name="first_name" id="first_name" class="autocomplete">
<input type="input" name="last_name" id="last_name" class="autocomplete">
<input type="input" name="contact_number" id="contact_number" class="autocomplete">
我使用自動完成類作爲用於啓動jQuery用戶界面自動完成功能的選擇器(見下面的代碼),使得在任何這些填充會導致使用所有3個輸入端的AJAX搜索。因爲我使用全部3個字段來執行搜索,所以結果必須位於特定位置(不是每個輸入都在正常情況下),所以我使用了一個帶有表格的div,並在其中顯示結果。這可以通過覆蓋內部的_renderItem函數來實現(見下面的代碼)。
然而,這隻適用於形式的第一個輸入,名字。其他輸入都在其各自輸入下方顯示下拉列表。似乎_renderItem覆蓋被忽略爲後續輸入。我嘗試交換輸入,並且首先正確工作,其他人則不正確。任何關於如何修復行爲的建議?
$(document).ready(function() {
$(".autocomplete").autocomplete({
search: function(event, ui) {
$("#autocompleteoutput table tbody").empty();
$("#autocompleteoutput").css("display", "inline");
},
source: function(request, response) {
jQuery.ajax({
url: "'.site_url('reservations/search_customer').'",
type: "post",
dataType: "json",
data: {
first_name: $("#first_name").val(),
last_name: $("#last_name").val(),
contact_number: $("#contact_number").val(),
'.$this->security->get_csrf_token_name().' : "'.$this->security->get_csrf_hash().'"
},
success: function(data) {
response(jQuery.map(data, function(item) {
return {
diner_id: item.diner_id,
first_name: item.first_name,
last_name: item.last_name,
dialing_code: item.dialing_code,
country_id: item.country_id,
contact_number: item.contact_number,
email: item.email
}
}))
}
})
}
})
.data("autocomplete")._renderItem = function(ul, item) {
return $("<tr class=\"customerselect\" data-dinerid=\"" + item.diner_id + "\" data-fname=\"" + item.first_name + "\" data-lname=\"" + item.last_name + "\" data-countryid=\"" + item.country_id + "\" data-num=\"" + item.contact_number + "\" data-email=\"" + item.email + "\"></tr>")
.data("item.autocomplete", item)
.append("<td><span class=\"icon-user\">" + item.first_name + " " + item.last_name + "</span></td>")
.append("<td><span class=\"icon-phone\">(+" + item.dialing_code + ") " + item.contact_number + "</span></td>")
.append("<td><span class=\"icon-mail\">" + item.email + "</span></td>")
.appendTo($("#autocompleteoutput table tbody"));
};
});
謝謝,完美無缺! – Martin 2012-07-10 15:45:51
不客氣! :-) – TWickz 2012-07-10 15:56:44