Tôi có hai hộp văn bản (văn bản kiểu nhập) trên cùng một HTML sử dụng cùng một tính năng tự động hoàn thành. Hộp văn bản đầu tiên hoạt động tốt, nhưng hộp văn bản thứ hai không hiển thị kết quả. Nó giao tiếp với máy chủ và tôi nhận được kết quả, nhưng hàm render thậm chí không được gọi. Sự khác biệt duy nhất giữa các yếu tố đầu vào là một trong một div bắt đầu ẩn và tôi hiển thị loại như cửa sổ Dialog bằng cách đặt z-order cao và che dấu HTML.Mục kết xuất tự động hoàn thành jQuery không được thực hiện
Đây là CSS cho div nơi hộp nhập thứ hai được đặt.
.windowBooking {
position:absolute;
width:450px;
/* height:200px; */
display:none;
z-index:9999;
padding:20px;
}
Chức năng autocomplete:
$(".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);
};
Các hộp đầu vào sử dụng cùng lớp gọi autocomplete.
<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>
Bất kỳ ý tưởng nào, tại sao lại hiển thị trên một hộp nhập liệu và không có trong hộp nhập liệu khác? Hãy để tôi làm cho rõ ràng, trên hộp đầu vào thứ hai điều duy nhất không hoạt động là hàm renderItem mà vì một lý do nào đó nó không được thực hiện. Trên màn hình, bạn có thể thấy rất nhiều không xác định nhưng nếu bạn chọn bất kỳ giá trị không xác định nào thì hộp nhập liệu sẽ được lấp đầy với giá trị chính xác.
Đã xảy ra sự cố tương tự. Giải thích (cho tò mò): bạn đang chọn nhiều phần tử, và '.data (' chỉ thiết lập dữ liệu trên phần tử đầu tiên. Vì vậy, bạn cần sử dụng 'each' để lặp và đặt hàm render trên mọi phần tử tự động hoàn thành. –