如何在不使用trigger、change或click事件的情况下程序化触发输入框点击?
解决Kendo DropDownList无需trigger/click触发变更的问题
针对你遇到的Kendo DropDownList不能用trigger/click/change方法触发事件的场景,可以通过以下两种方式处理:
方法1:直接调用组件绑定的change回调函数
先同步下拉框的文本与对应值,再手动执行已绑定的change事件逻辑:
// 获取下拉框实例 const dropdown = $("#id").data("kendoDropDownList"); // 设置文本 dropdown.text(data[i].Text); // 根据文本匹配对应的dataItem,同步设置value(保证数据一致性) const targetItem = dropdown.dataItems().find(item => item.Text === data[i].Text); if (targetItem) { dropdown.value(targetItem.Value); } // 直接执行绑定的change回调 if (dropdown.options.change) { dropdown.options.change.call(dropdown, { sender: dropdown }); }
方法2:调用组件内部的私有变更处理方法
Kendo DropDownList内部有_change方法用于处理变更逻辑,直接调用即可触发组件的变更流程:
const dropdown = $("#id").data("kendoDropDownList"); dropdown.text(data[i].Text); // 同步value const targetItem = dropdown.dataItems().find(item => item.Text === data[i].Text); if (targetItem) { dropdown.value(targetItem.Value); } // 调用内部_change方法触发变更 dropdown._change();
注意事项
- 必须先同步
value与text,否则下拉框的显示值与实际绑定值会不一致,导致后续逻辑出错。 _change是Kendo组件的私有方法,当前版本可用,但后续框架更新可能会有变动,建议优先使用方法1。
内容的提问来源于stack exchange,提问作者OreuhNation
相关产品推荐
相关产品推荐

