У меня есть два текстовых поля (тип ввода текста) в том же HTML, которые используют одно и то же автозаполнение. Первое текстовое поле работает нормально, но второе текстовое поле не отображает результаты. Он связывается с сервером, и я получаю результаты, но функция рендеринга даже не вызывается. Единственная разница между входными данными состоит в том, что один находится в div, который начинается скрытым, и я показываю вид, подобный окну диалога, устанавливая высокий z-порядок и маскируя HTML.
Вот CSS для div, где находится второе поле ввода.
.windowBooking {
position:absolute;
width:450px;
/* height:200px; */
display:none;
z-index:9999;
padding:20px;
}
Функция автозаполнения:
$(".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);
};
В полях ввода используется один и тот же класс для вызова автозаполнения.
<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>
Есть идеи, зачем рендерить в одном поле ввода, а в другом - нет? Позвольте мне прояснить, что во втором поле ввода не работает только функция renderItem, которая по какой-то причине не выполняется. На экране вы можете увидеть множество неопределенных значений, но если вы выберете одно из неопределенных значений, поле ввода заполнится правильным значением.