jQuery Autocomplete - категория не отображается, а метки - PullRequest
1 голос
/ 07 октября 2011

Это мой код: Я хотел бы иметь «заголовок» в автозаполнении, информирующий пользователя о некоторых вещах, поэтому я хотел использовать «категорию». Но это не работает. Значения в «метке» отображаются, а категория - нет. Что не так с этим кодом? Может быть, я неправильно строю доступные теги? Но автозаполнение все же предлагает ярлыки ...

$(function() {
    var jsonArray = <?php echo $jsonValuesSearch; ?>;
    var availableTags = [];var i=0;
            for (var indeks in jsonArray){
                var pom = {
                    "label"  : jsonArray[indeks],
                    "category" : "Tagi"
                };
                availableTags[i] = pom;
                i++;

            }
    function split( val ) {
                    return val.split( " " );
    }
    function extractLast( term ) {
        return split( term ).pop();
    }

    $( "#tags_search" )
        // don't navigate away from the field on tab when selecting an item
        .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                    $( this ).data( "autocomplete" ).menu.active ) {
                event.preventDefault();
            }
        })
        .autocomplete({
            minLength: 0,
            source: function( request, response ) {
                // delegate back to autocomplete, but extract the last term
                response( $.ui.autocomplete.filter(
                    availableTags, extractLast( request.term ) ) );
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function( event, ui ) {
                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push( "" );
                this.value = terms.join( " " );
                return false;
            }
        });
});

Вот как я создаю таблицу json:

    $items = Doctrine::getTable('Tags')->findAll()->toKeyValueArray('id', 'name');
    $this->view->jsonValues = Zend_Json_Encoder::encode($items);

1 Ответ

1 голос
/ 13 октября 2011

Когда автозаполнение пользовательского интерфейса jQuery получает JSON метки: и значения:, оно отображает элементы метки в раскрывающемся списке, а при выборе оно устанавливает элемент значения в качестве значения поля ввода. У вас могут быть дополнительные вещи, например, категория: в вашем случае. Опция select: имеет значения this.value и item.value, но ваш JSON не имеет значения: - поэтому автозаполнение не знает, что делать в select. Если вы хотите, чтобы как элементы ярлыка, так и элементы категории отображались в раскрывающемся списке, вам нужен параметр success: с выражением, которое объединяет их так, как вы хотите. Посмотрите на исходный код на странице документации автозаполнения для некоторых примеров того, как это сделать. Затем просто замените ваши переменные в нужной последовательности и пунктуации.

...