автозаполнение jquery: this.menu не определено - PullRequest
3 голосов
/ 05 мая 2011

Я использую автозаполнение jQuery UI для некоторых данных. Теперь у меня есть 3 элемента автозаполнения, и 2 из них работают нормально, один - нет. В начале страницы он выдает мне ошибку elem.ownerDocument is null. Когда я помещаю текст в поле input, он находит результат, но я получаю ошибку this.menu is undefined (jquery.js line 6012), которая относится к ul list, где должен быть показан результат.

Вот код:

$("#iName").autocomplete({
    source: widget.festivals_list,
    autofocus: true,
    focus: function (e, ui) {
        return false;
    },
    search: function (event, ui){
        ownFest = true;
        $("#iDate").removeAttr("disabled");
        $("#iTime").removeAttr("disabled");
    },
    select: function (event, ui) {
        ownFest = false;
        $(event.target).val(ui.item.label);
        selectedN = ui.item.value;
        $(widget.festivals).each(function fn(){
            if(this.id == ui.item.value){
                $("#iDate").val(this.date).attr("disabled", "disabled");
                $("#iTime").val(this.time).attr("disabled", "disabled");
            }
        });
        return false;
    }
});

HTML КОД:

<table>
                    <tr>
                        <td>Type the name</td>
                    </tr>
                    <tr>
                        <td><input type="text" id="iFest"/></td>
                    </tr>
                </table>

Это создает типичное количество атрибутов для моего тега input и создает список ul.

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem"></ul>

<input id="iFest" class="ui-autocomplete-input" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">

Кто-то, кто также имел эти проблемы? Спасибо

(с использованием jQuery 1.5.2 и jQuery UI 1.8.11)

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 апреля 2013

Вам не хватает библиотеки, на которую ссылается автозаполнение.

Итак, включите это:

<script type="text/javascript" src="js/ui/jquery.ui.menu.js"></script>

Удачи!

0 голосов
/ 05 мая 2011

Я верю, потому что ваше «это» выходит за рамки.

Внутри функции «это» не всегда то, что вы думаете.

обычное решение - это сделатьссылка на ваше глобальное «this»

var element = $(this);

или

var me = this;

И ссылка на элемент вместо «this», когда вы находитесь в функции.

Можете ли вы опубликовать свой HTML тоже?или указать, какая строка имеет ошибку?Я не могу видеть это из твоего фрагмента.

...