将事件绑定到 Kendo 下拉列表时出现未捕获的类型错误
Uncaught type error when binding Events to Kendo dropdownlist
我尝试为 Kendo 下拉列表上的 select 操作绑定一个事件。我已经把
事件句柄的引号,因为没有额外的引号,事件处理程序出现在 javascript 代码上并给出了错误。
@(Html.Kendo().DropDownList()
.Name("yearDropDown")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<DropDownListItem>() { new DropDownListItem() { Text = "2015", Value = "2015" }, new DropDownListItem() { Text = "2016", Value = "2016" }, new DropDownListItem() { Text = "2017", Value = "2017" }, new DropDownListItem() { Text = "2018", Value = "2018" } })
.Events(e => {
e.Select("\"drpDwnForecastYearSelect\"");
})
.Value(userInput.year)
.HtmlAttributes(new { style = "width : 8em" })
)
我也在 javascript 中编写了处理程序。但是当我点击下拉菜单中的一个选项时,我在控制台中收到这样的错误
Uncaught TypeError: r[n].call is not a function
at init.trigger (kendo.all.js:124)
at init._change (kendo.all.js:32793)
at Object.<anonymous> (kendo.all.js:32802)
at i (jquery.min.js:2)
at Object.add [as done] (jquery.min.js:2)
at init._click (kendo.all.js:32801)
at init.d (jquery.min.js:2)
at init.trigger (kendo.all.js:124)
at init._click (kendo.all.js:28060)
at HTMLLIElement.d (jquery.min.js:2)
我面临的问题与 this support ticket 非常相似,但那里没有解决方案,我不能 post 如果不购买高级版。
不要在 select 事件处理程序规范中引入额外的双引号
改变
e.Select("\"drpDwnForecastYearSelect\"");
回到
e.Select("drpDwnForecastYearSelect");
如果您没有定义 global javascript 函数 drpDwnForecastYearSelect
那么浏览器调试控制台将显示
Uncaught ReferenceError: drpDwnForecastYearSelect is not defined
at . . .
正确
将 select 处理程序定义为全局函数。
<script>
function drpDwnForecastYearSelect(e) {
console.log(e);
}
</script>
全局范围可用于 DropDownList 助手呈现的 JavaScript 范围(从 kendo.syncReady() 闭包中调用处理程序).包含处理程序函数的脚本块可以出现在助手之前或之后。
错误
在jQuery文档内定义函数准备好了,比如下面的
$(function () {
// Welcome to jQuery document ready
function drpDwnForecastYearSelect(e) {
console.log(e);
}
})
将不起作用。 $( document ).ready()
闭包中定义的函数范围不适用于 DropDownList 助手呈现的 kendo.syncReady()
闭包代码的范围。
我尝试为 Kendo 下拉列表上的 select 操作绑定一个事件。我已经把 事件句柄的引号,因为没有额外的引号,事件处理程序出现在 javascript 代码上并给出了错误。
@(Html.Kendo().DropDownList()
.Name("yearDropDown")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<DropDownListItem>() { new DropDownListItem() { Text = "2015", Value = "2015" }, new DropDownListItem() { Text = "2016", Value = "2016" }, new DropDownListItem() { Text = "2017", Value = "2017" }, new DropDownListItem() { Text = "2018", Value = "2018" } })
.Events(e => {
e.Select("\"drpDwnForecastYearSelect\"");
})
.Value(userInput.year)
.HtmlAttributes(new { style = "width : 8em" })
)
我也在 javascript 中编写了处理程序。但是当我点击下拉菜单中的一个选项时,我在控制台中收到这样的错误
Uncaught TypeError: r[n].call is not a function
at init.trigger (kendo.all.js:124)
at init._change (kendo.all.js:32793)
at Object.<anonymous> (kendo.all.js:32802)
at i (jquery.min.js:2)
at Object.add [as done] (jquery.min.js:2)
at init._click (kendo.all.js:32801)
at init.d (jquery.min.js:2)
at init.trigger (kendo.all.js:124)
at init._click (kendo.all.js:28060)
at HTMLLIElement.d (jquery.min.js:2)
我面临的问题与 this support ticket 非常相似,但那里没有解决方案,我不能 post 如果不购买高级版。
不要在 select 事件处理程序规范中引入额外的双引号
改变
e.Select("\"drpDwnForecastYearSelect\"");
回到
e.Select("drpDwnForecastYearSelect");
如果您没有定义 global javascript 函数 drpDwnForecastYearSelect
那么浏览器调试控制台将显示
Uncaught ReferenceError: drpDwnForecastYearSelect is not defined
at . . .
正确
将 select 处理程序定义为全局函数。
<script>
function drpDwnForecastYearSelect(e) {
console.log(e);
}
</script>
全局范围可用于 DropDownList 助手呈现的 JavaScript 范围(从 kendo.syncReady() 闭包中调用处理程序).包含处理程序函数的脚本块可以出现在助手之前或之后。
错误
在jQuery文档内定义函数准备好了,比如下面的
$(function () {
// Welcome to jQuery document ready
function drpDwnForecastYearSelect(e) {
console.log(e);
}
})
将不起作用。 $( document ).ready()
闭包中定义的函数范围不适用于 DropDownList 助手呈现的 kendo.syncReady()
闭包代码的范围。