Получение списка предложений автозаполнения jquery при выборе или вводе

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

Это довольно близко к тому, что я хочу, я буду продолжать играть с этим и, надеюсь, сам это выясню:

HTML

<input id="autocomplete"/>
<div class="test">Output goes here:<br/><ul></ul></div>

JS

$('input').autocomplete({
    search: function(event, ui) {
        $('.test ul').empty();
    },
    source: ["something", "something-else"]
}).data('autocomplete')._renderItem = function(ul, item) {

    return $('<li/>')
   .data('item.autocomplete', item)
   .append(item.value)
   .appendTo($('.test ul'));
};

http://jsfiddle.net/uMqyn/1/

Спасибо!

2 ответа

Вот кое-что, с чего можно начать - FIDDLE.

Используйте функцию "response" для извлечения возвращаемых переменных с ui.content[n].value а затем положить их, где вы хотите.

JS

$('.autocomp').autocomplete({
    autoFocus : true,
    source : areas,
    selectFirst : true,
    response: function( event, ui ) { 
        for(var n=0; n<5; n++)
        {
         $('.test').append( ui.content[n].value + '<br />' );
         console.log( ui.content[n].value );
        }
    }
});

Придумали это:

http://jsfiddle.net/uMqyn/565/

var areas = ['california', 'nevada', 'oregon', 'utah', 'arizona', 'new mexico', 'minnesota', 'texas', 'louisiana', 'alabama', 'mississippi', 'oklahoma', 'washington'];

var foo;
$('.autocomp').autocomplete({
    minLength: 1,
    source: areas,
    delay: 0,
    response: function (event, ui) {
        foo = ui.content;
    }
});

$(".autocomp").keypress(function (e) {
    if (!e) e = window.event;
    if (e.keyCode == '13') {
        $('.autocomp').autocomplete('close');
        if (foo.length) {
            $(".test").empty();
            for (var i = 0; i < foo.length; i++) {
                $(".test").append(foo[i].value + '<br>');
            }
        }
        return false;
    }
});
Другие вопросы по тегам