2014-02-06 38 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)