jQuery AutoComplete, пользовательские данные возврата - PullRequest
5 голосов
/ 11 июля 2011

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

Это данные (JSON):

[{"user_id":"1","user_name":"jarru"},{"user_id":"2","user_name":"harryq"},{"user_id":"3","user_name":"sleet"}]

А вот этот javascript, который я использую:

<script type="application/javascript">
$(document).ready(function(){
    $("#add_email_user").autocomplete({
            source: baseurl+"users/ajax/users/",
                        dataType: 'json',
                        success: function(data) {
                        console.log("asd");
                          response($.map(data, function(item) {
                            return {
                              label: item.user_name,
                              value: item.user_id
                            }
                          }));
                          }
        });

});
</script>

Когда я использую этот код, ничего не происходит, есть выпадающий список размером 3 пикселя, в котором ничего нет. Данные запрашиваются правильно (как сообщает консоль FireBug), но в раскрывающемся списке ничего не указывается.

1 Ответ

5 голосов
/ 11 июля 2011

Что вам нужно сделать, это предоставить свою собственную функцию _renderItem. Этот пример в API показывает, как это сделать. Вы также можете взглянуть на исходный код плагина, чтобы увидеть, как это делается нормально.

$( "#project" ).autocomplete({
    minLength: 0,
    source: projects,
    focus: function( event, ui ) {
        $( "#project" ).val( ui.item.label );
        return false;
    },
    select: function( event, ui ) {
        $( "#project" ).val( ui.item.label );
        $( "#project-id" ).val( ui.item.value );
        $( "#project-description" ).html( ui.item.desc );
        $( "#project-icon" ).attr( "src", "images/" + ui.item.icon );

        return false;
    }
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
        .appendTo( ul );
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...