2014-02-19 4 views
1

Я искал твердо в течение нескольких часов, и я не могу понять, что мне нужно делать. Я использую более старую версию Autocomplete в пользовательском интерфейсе JQuery 1.8.16. Прежде чем спросить, я не могу его обновить. Я пытаюсь настроить пользовательский дисплей данных, поэтому я использую пример «пользовательских данных» из документации. Мой код правильно построен в формате, который ожидает пример, однако я добавил несколько других ключей, которые мне так нужны. Моя структура похожа на то, что я предоставил в этом jsBin. http://jsbin.com/zut/1/editJQuery UI Autocomplete select return undefined

Мне нужно переопределить функции выбора и фокусировки. Последующие примеры. У меня этот код определен для секции шаблона.

 .data("autocomplete")._renderItem = function(ul, item) { 
       var template; 
       if (item.isActive === true) { 
        template = "<a>" + item.label + item.desc + item.status + "</a>"; 
       } else { 
        template = "<a >" + item.label + item.desc + "<span class='inactive'>" + item.status 
        + "</span></a>"; 
       } 

       return $("<li>") 
        .append(template) // .append("<a>" + item.label + item.desc + "</a>") 
        .appendTo(ul); 
     }; 
    }, 

это делает шаблон штрафа, однако я получаю «неопределенный» для «уй» паров в избранном и сосредоточиться конкретно «TypeError: ui.item не определен»

Я попытался изменить .data («autocomplete») в .data («ui-autocomplete») Это избавит вас от «TypeError: ui.item не определено», однако теперь все дополнительные данные шаблона исчезли, и я показываю только ярлыки.

Я положил его обратно, а затем испортил, используя ._renderItemData vs ._renderItem, и это приводит к тому же, что и выше. Исходная ошибка исчезла, однако весь лишний текст ушел.

Я нахожусь в убытке, и вся помощь будет принята с благодарностью! Я просто хочу отображать дополнительный пользовательский текст, сохраняя при этом значения выбора и фокусировки. Все «исправления», которые я нашел до сих пор, по-видимому, исправляют одну проблему, но нарушают все «пользовательские данные».

ответ

1

Вы отсутствуете настройки, чтобы установить данные в литий

.data("autocomplete")._renderItem = function (ul, item) { 
    var template; 
    if (item.isActive === true) { 
     template = "<a>" + item.label + item.desc + item.status + "</a>"; 
    } else { 
     template = "<a >" + item.label + item.desc + "<span class='inactive'>" + item.status + "</span></a>"; 
    } 

    return $("<li>") 
     //missing this 
     .data("item.autocomplete", item) 
     .append(template) 
     .appendTo(ul); 
}; 

Демы: Fiddle

Смотрите оригинальную реализация на http://code.jquery.com/ui/1.8.16/jquery-ui.js есть это значение данных устанавливается

+0

Я не могу выразить, насколько я хочу просто ударить себя с моим монитором компьютера прямо сейчас. Поговорите о том, чтобы смотреть на что-то WAAAAAAAY слишком долго. Спасибо, что полностью сделал трюк! – user2217623

+0

Я тоже потратил слишком много времени на это. Благодаря! – MattParra