【问题标题】:trigger select event programmatically以编程方式触发选择事件
【发布时间】:2013-01-23 15:23:21
【问题描述】:

我有一个 kendoUI 下拉列表,定义如下:

 @(Html.Kendo().DropDownList()
                  .Name("EditGroupSelector")
                  .BindTo(Model.Groups)
                   .Events(
                    events => events
                        .Select("onEditGroupSelected")
                   )
            )

我知道当我按如下方式调用 api 时不会触发 select 事件:

editGroupSelector.select(0);

手动选择第一项后,我想手动触发选择事件:

editGroupSelector.trigger("select");//api calls dont trigger events -> trigger it manually

这会调用事件,但在事件处理程序中,我没有我的事件,因此无法获取新的选定值:

function onEditGroupSelected(e) {
    var nameOfGroup = e.item.text();//e.item does not exist when triggered manually
}

如何触发事件以便我可以在事件处理程序中实际使用“e.item”?

【问题讨论】:

  • 你知道如果你想得到所选项目的text,你可以做editGroupSelector.text(),如果你手动或自动选择值都可以吗?
  • 哦,谢谢……我不知道!
  • 对于completeness 的问题,我添加了一个关于如何模拟事件的示例,以防万一您(或其他人)需要它

标签: c# asp.net-mvc kendo-ui


【解决方案1】:

jQuery trigger 函数有一个可选参数,即实参。您需要手动添加它,使其与自动调用兼容。你应该添加(至少)item

示例:

如果您的dropDownListiddropdownlist,您可以按如下方式创建参数:

dropDownList.select(3);
dropDownList.trigger("select",
        { item: $("li.k-state-selected", $("#dropdownlist-list")) }
);

注意:请务必注意,list 装饰器(打开 dropDownList)不是由您定义的 id(例如 dropdownlist)标识,而是由 id其次是-list(例如:dropdownlist-list)。这就是为什么 jQuery 选择器是 $("li.k-state-selected", $("#dropdownlist-list")

【讨论】:

  • 我怎样才能将项目添加到触发器(“选择”)?
  • 请参阅答案中的示例。阅读注释
  • 感谢您的示例和解释 - 这对我帮助很大!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多