Получение списка предложений по результатам в автозаполнении jquery - PullRequest
0 голосов
/ 30 октября 2011

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

$("#txtName").autocomplete(data,
                                  { matchContains: true,
                                      minChars: 0,
                                      max: 3000,
                                      scroll: true,
                                      //scrollHeight: 180,
                                      width: 200
                                  });

но полоса прокрутки не работает должным образом в IE (это известная проблема, я много искал, но не нашел подходящего решения).

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

Заранее спасибо!

Ответы [ 2 ]

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

Быстро просматривая API этого плагина, я не вижу никаких событий, которые позволили бы вам обработать ответ от обратного вызова сервера.Возможно, вы захотите переключиться и использовать официальную библиотеку пользовательского интерфейса JQuery для автоматического заполнения.Существует вариант appendTo, который может удовлетворить ваши потребности.

0 голосов
/ 02 ноября 2011

Я нашел ответ (часть этого, мне все еще нужно работать над этим).Сначала я опубликую код, а затем объясню его:

$(function ()
{
    var names = [
        { label: 'Java', value: '1' },
        { label: 'C++', value: '2' },
        { label: 'C#', value: '3' },
        { label: 'Jquery', value: '4' },
        { label: 'Javascript', value: '5' },
        { label: 'ASP', value: '6' },
        { label: 'Pearl', value: '7' },
        { label: 'VB', value: '8' },
        { label: 'Ajax', value: '9' },
        { label: 'Json', value: '10' }];

    $("#txtName").autocomplete({
        minLength: 2,
        source: names,
        delay: 500
    }).data("autocomplete")._renderItem = function (ul, item)
    {
        //add data to my control, need to take care of earasing each time.
        var elOptNew = document.createElement('option');
        elOptNew.text = item.label;
        elOptNew.value = item.value;
        lst.add(elOptNew);

        //this code here adds the items to the popup thats built in.(it's written in jquery-ui.min.js)
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append("<a>" + item.label + "</a>")
            .appendTo(ul);
    };
});

HTML:

    <input id="txtName"/> 
    <select id="lst" size='10'></select>

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

Еще одна вещь, которая не была сделана, это стирать список каждый раз.Мне все еще нужно выяснить, как это сделать.

...