Элемент рендеринга автозаполнения jQuery не выполняется

У меня есть два текстовых поля (текст типа ввода) в одном 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, которая по какой-то причине не выполняется. На экране вы можете увидеть множество неопределенных значений, но если вы выберете любое из неопределенных значений, поле ввода заполнится правильным значением.

10
задан Tiago 19 July 2013 в 13:00
поделиться