在Kendo自动填充中获取所选对象

时间:2016-08-02 14:37:31

标签: javascript kendo-ui kendo-autocomplete

我有一个Kendo Autocomplete项目:

ID      TERM    COUNTY      SEQUENCE
1234    201308  ORANGE      NULL
1234    201401  ORANGE      NULL
1234    201408  ORANGE      1
1234    201501  ORANGE      NULL
1234    201505  ORANGE      NULL
1234    201508  OSCEOLA     3
1234    201601  OSCEOLA     NULL
5678    201301  NULL        NULL
5678    201305  NULL        NULL
5678    201308  ST JOHNS    3
5678    201401  ST JOHNS    NULL
5678    201405  ST JOHNS    NULL
5678    201408  ST JOHNS    NULL
5678    201501  ST JOHNS    NULL
5678    201505  DUVAL       4

从我的数据源dsTransporteur中选择我的对象没有问题,但我需要获取在自动完成中选择的对象。
我试过这个:

<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
    });

但是transp.select()不会返回数据源中对象的索引,并且是&#34; undefined&#34;。
知道如何在自动完成中选择对象吗?

我还尝试添加一个名为veh_Transporteur的全局var并添加了这个:

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

但我仍然有#34; undefined&#34;在veh_TRANSPORTEUR。

4 个答案:

答案 0 :(得分:3)

尝试以下

$("#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);
                    }
                }

答案 1 :(得分:0)

AutoComplete.select()不会返回当前选择,这会像通常对其他窗口小部件(Grid,TreeView)一样令人困惑。 http://docs.telerik.com/kendo-ui/api/javascript/ui/autocomplete#methods-select

没有参数的.dataItem()方法应返回自动完成的所选对象。

实施例: http://dojo.telerik.com/@Stephen/eJonI

答案 2 :(得分:0)

似乎:

var test = this.dataItem();

没有在IE上工作,我在Firefox上使用globals var尝试了我的解决方案并且它有效...不知道为什么我在IE上遇到这个问题。

编辑:问题不是来自IE,我使用标签从一个自动完成到另一个。但是,如果我使用tab键或Enter键而没有选择出现列表中的元素(如果我只使用单词的自动完成)我传递了更改事件,但是我没有选择任何内容autoComplete,因此我的var的内容是&#34; undefined&#34;。

答案 3 :(得分:0)

$("#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));
}