Автозаполнение YUI3: как получить значение после события выбора

Я реализую приложение для получения информации об акциях из Yahoo Finance API с использованием YUI3. Я сделал список автозаполнения, но столкнулся с проблемой, как получить значение после того, как пользователь щелкнул мышью или нажал клавишу ввода в списке.

Вот мой код. Проблема в том, что mynode.after(...) выдает ошибку, но я понятия не имею, почему и как это исправить. Любая помощь будет оценена по достоинству. Спасибо.

   YUI().use('autocomplete', function (Y){
    mynode = Y.one('#comsymbol');
    mynode.plug(Y.Plugin.AutoComplete, {
        activateFirstItem: true,
        enableCache: false,
        source: function(query, callback) {
            $.ajax({
                dataType: "jsonp",
                cache: true,
                type: "GET",
                jsonp: "callback",
                jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback",
                data: {query:query},
                url: "http://autoc.finance.yahoo.com/autoc",
            });

            YAHOO.Finance.SymbolSuggest.ssCallback = function(data) {
                var result = data.ResultSet.Result;
                var lists = new Array();
                for( var i = 0; i < result.length; i++ ) {
                    var sb = result[i].symbol;
                    var nm = result[i].name;
                    var xch = result[i].exch;
                    var all = sb + ", " + nm + " (" + xch + ")";
                    lists[i] = all;
                }
                callback( lists );
            };
        },
        }

        mynode.after('select', function (e) {
            getStockInfo();
        });

    });

});

person user20160519    schedule 18.04.2014    source источник


Ответы (1)


Вы должны прикрепить прослушиватель событий к экземпляру AutoComplete, а не к экземпляру Node. Доступ к экземпляру AutoComplete можно получить через член ac экземпляра Node, и оттуда вы можете просто прикрепить свой обратный вызов события, как вы делали это раньше:

mynode.ac.after('select', function (e) {
    getStockInfo();
});

Ознакомьтесь с руководством по автозаполнению YUI (Как плагин) для более подробной информации.

person stiemannkj1    schedule 06.08.2014