Получить выбранный объект в автозаполнении Kendo

У меня есть пункт автозаполнения Kendo:

<input type="text" id="Ac_Transporteur" class="" maxlength="30" required/>
--------------------------------------------------------------------------
    $("#Ac_Transporteur").kendoAutoComplete({
    dataTextField: "Nom",
    //Not interesting code here
    dataSource: dsTransporteurs,
    suggest: true,
    delay: 0
    });

У меня нет проблем с выбором объектов из моего источника данных dsTransporteur, но мне нужно получить объект, выбранный при автозаполнении.
Я попробовал это:

var transp = $("#Ac_Transporteur").data("kendoAutoComplete");
var transpSelect = transp.select();
oVehicule._Transporteur = transp.dataItem(transpSelect);

но transp.select() не возвращает индекс объекта в источнике данных и является "неопределенным".
Любая идея, как я могу получить объект, выбранный в моем автозаполнении?

Я также попытался добавить глобальную переменную с именем veh_Transporteur и добавил это:

change: function (e) {
        veh_TRANSPORTEUR = this.dataItem();
},

Но у меня все еще есть "undefined" в veh_TRANSPORTEUR.

4 ответа

Решение

Кажется, что:

var test = this.dataItem();

не работает в IE, я попробовал свое решение с помощью globals var в Firefox, и это сработало... Не знаю, почему у меня такая проблема в IE.

РЕДАКТИРОВАТЬ: проблема не исходила от IE, я переходил от одного автозаполнения к другому, используя вкладку. Но если я использую клавишу табуляции или клавишу Enter без выбора элемента в появившемся списке (если я использую только автозаполнение слова), я передаю событие изменения, но в автозаполнении ничего не выбрано, таким образом, содержание моего var "undefined".

Попробуйте следующее

$("#Ac_Transporteur").kendoAutoComplete({
dataTextField: "Nom",
dataSource: dsTransporteurs,
suggest: true,
delay: 0,
select: onSelect
});

function onSelect(e) {
                        var dataItem = this.dataItem(e.item.index());
                        alert(dataItem);
                    }
                }

AutoComplete.select() не возвращает текущий выбор, что сбивает с толку, как это обычно бывает для других виджетов (Grid, TreeView). http://docs.telerik.com/kendo-ui/api/javascript/ui/autocomplete

Метод.dataItem() без параметра должен возвращать выбранный объект для автозаполнения.

Пример: http://dojo.telerik.com/@Stephen/eJonI

$("#Ac_Transporteur").kendoAutoComplete({
    dataTextField: "Nom",
    //Not interesting code here
    dataSource: dsTransporteurs,
    suggest: true,
    delay: 0
    });

$(document).ready(function () {
    var data = $('#Ac_Transporteur').data('kendoAutoComplete');
    var dataValue = data.value($("#value").val());
    var dataItem = data.dataItems();

    var find = dataItem.filter(x => x.Nom === dataValue)

    var Transporteur= new Array();
    Transporteur = find;
    alert(JSON.stringify(Transporteur));
}
Другие вопросы по тегам