2014-02-06 45 views
1

我绑定一个DropDownList小部件select事件,像这样:剑道UI网站 - DropDownList中:选择事件不会返回所选值正确

var items = [ 
    { text: 'Item 3', value: '3' }, 
    { text: 'Item 4', value: '4' } 
]; 

var dropDownListEl = $('#dropdownlist'); 
dropDownListEl.kendoDropDownList({ 
    dataTextField: 'text', 
    dataValueField: 'value', 
    index: 0 
}); 

var kDropDownList = dropDownListEl.data('kendoDropDownList'), 
    ds = kDropDownList.dataSource; 

items.forEach(function (item) { 
    ds.add(item); 
}); 

kDropDownList.bind('select', function (e) { 
    console.log('this.value(): ' + this.value()); 
}); 

但是,当我这样做是不返回正确的值选择。

我一直在尝试几乎所有的可能性,没有任何工作。 http://jsfiddle.net/glenn/gxJ3S/

这让我疯狂!

回答

8

绑定剑道的DropDownList的选择事件如下得到正确选择的项目

kDropDownList.bind('select', function (e) { 
     var dataItem = this.dataItem(e.item.index()); 
     console.log('this.value(): ' + dataItem.value); 

    }); 

Here is the working JSFiddle

+1

待办事项现在,你应该使用'this.dataItem(e.item)'代替。请参阅http://www.telerik.com/forums/drop-down-list-dataitem-returns-incorrect-item#bjLQ8DTUL0WGY6IcWy5zUA – ken2k

0

如果你使用的角度,你可以得到与所选项目: e.sender.dataItem(e.item.index())

1
var _item = e.sender.dataItem(e.sender.selectedIndex); 
2

使用change事件相反,它是更直接的

.. 
    change: function(e) { 
    var value = this.value(); 
    // Use the value of the widget 
    } 
.. 
1

我认为剑道改变了他们的API:

重要提示:由于版本2015年第一季度(2015.1.318),选项标签具有 已移到项目列表DOM集合之外。因此, jQuery.index()不能再用于可靠地检测选项 标签是否是选定的下拉项目。

Ref。 http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#events-select

归根结底,这只是为我工作的事情:

var item = e.sender.dataItem(e.item)