我正在尝试更改 Kendo UI 下拉列表的“更改”事件,但不幸的是我没有任何运气。这是我到目前为止尝试过的代码:http://trykendoui.telerik.com/ukeV
具体来说,这是我的下拉列表初始值设定项:
var onChange = function(e)
{
alert("something changed");
};
// create DropDownList from input HTML element
$("#dropdown").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data,
index: 0,
change: onChange
});
这是我稍后尝试更改该功能的尝试:
onChange = function(e){alert("attempt 1");};
var dropDownData = $("#dropdown").data("kendoDropDownList");
dropDownData.options.change = function(e){alert("attempt 2");}
dropDownData.refresh();
具体来说,我首先尝试仅更改 onChange 函数,然后(当这不起作用时),我尝试直接更改 options.change 函数。虽然 options.change 函数确实发生了变化(当我在 chrome 调试器中检查它时),但下拉列表的实际功能保持不变。我想我需要刷新下拉列表或其他内容才能使我的编辑真正生效。有谁知道我如何才能真正让剑道网格刷新并显示我的数据?
最佳答案
我发现您已经找到了解决方法,但我想我应该添加更多解释。
为什么要这样改
onChange = function(e){alert("attempt 1");};
不起作用的是您将一个函数传递给小部件,并且小部件在适当的时间调用该函数。您没有传递对变量 onChange
的引用。因此更改变量不会影响小部件。
原因
dropDownData.options.change = function(e){alert("attempt 2");}
不起作用的是 Kendo 将处理程序存储在自己的结构中(这是必要的,因为您可以为同一事件绑定(bind)多个处理程序!),因此它不会调用 options.change
在任何给定的时刻。
但是,有一个 setOptions
方法,使用它您可以使第二种方法起作用:
dropDownData.setOptions({
change: function (e) {
alert("attempt 2");
}
});
关于javascript - 修改Kendo UI Dropdownlist的change事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089302/