Автозаполнение пользовательского интерфейса jQuery: введите для завершения - PullRequest
3 голосов
/ 29 декабря 2010

Используя jQuery autocomplete , возможно ли сделать так, чтобы первый элемент автоматически выделялся и заполнялся, когда пользователь нажимает ввод, , но , а не при выходе ввода (ввод теряет фокус)?

Самое близкое, что я нашел, это это , но оно автоматически завершается при потере фокуса.

1 Ответ

1 голос
/ 13 марта 2011

Мне кажется, у меня есть решение, которое работает - без нарушения существующего поведения - путем расширения $.ui.autocomplete и переопределением метода _suggest.

$.widget('ui.myAutocomplete', $.extend({}, $.ui.autocomplete.prototype, {
    _suggest : function(items) {
        // Call ui.autocomplete's parent method
        $.ui.autocomplete.prototype._suggest.call(this, items);

        // Find the first list item
        var item = this.menu.element.children()[0];

        // Make this item active.
        // An event is expected so a fake one is passed as a parameter.
        this.menu.activate(new jQuery.Event('null.event'), $(item));
    }
}));

Теперь вы можете использовать новый подкласс $.ui.myAutocomplete таким же образом, как $.ui.autocomplete

$(function() {
    var source = [
        'test 1'
        ,'test 2'
        ,'test 3'
    ];

    $('#selector')
        .myAutocomplete({
            source : source
        });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...