Почему jquery ui autocomplete отказался от поддержки этих функций? - PullRequest
6 голосов
/ 20 февраля 2011

Команда пользовательского интерфейса jquery ведет блог о том, как заменить устаревшее автозаполнение, и обосновывает, что он может копировать все старые функции и опции .Основываясь на моих тестах, я не думаю, что они могут реплицироваться:

  1. selectFirst , если у вас есть удаленный источник данных
  2. selectFirst или mustMatch , если вы используете множественный: true

я вижу этот вопрос о том, как реплицировать некоторые устаревшие автозаполнения опции из этого плагина , и есть выбранный ответ, но он не обращается к этим ситуациям.

У пользователей jquery ui есть пример репликации selectFirst в новом автозаполнении , но, если я не ошибаюсь, он работает только с локальным источником данных (не с удаленным источником данных, поскольку меню обычно не заполняется до вызова события).

Я что-то упустил или эти сценарии просто не поддерживаются в jquery ui autocomplete ??

1 Ответ

6 голосов
/ 23 февраля 2011

Эти сценарии на самом деле поддерживаются, но вы должны расширить виджет ui.autocomplete для достижения желаемого поведения. Быстрый пример реализации функции selectFirst:

$.widget( "ui.autocomplete2", $.ui.autocomplete, {
    _renderMenu: function( ul, items ) {
        var self = this;
        $.each( items, function( index, item ) {
            self._renderItem( ul, item );
        });
        // setTimeout is needed because jQueryUI automaticaly removes
        // active item just after menu rendering
        setTimeout( function(){
            self.menu.activate(
                // fake event object. Needed to avoid jQueryUI error 
                // (unsafe property access)
                {'type':'fake'}, 
                ul.find(':first') );
        }, 1);
    }
});

Внимание : Всегда проверяйте, совместим ли новый виджет с новой версией jQuery UI!

Обновление: пример реализации mustMatch можно найти здесь: http://jqueryui.com/demos/autocomplete/combobox.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...