You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telerik Kendo DropDownList在Select事件中获取旧值的问题

解决Kendo MVC下拉列表获取选中值滞后的问题

问题根源

你绑定的是Select事件,这个事件的触发时机是用户点击选中选项,但下拉列表的正式值还未更新的时候,所以此时调用.text()或.val()拿到的都是上一次的旧值,首次选择时自然就是OptionLabel的内容。

方案1:改用Change事件(推荐)

Change事件是在下拉列表的值已经更新完成后触发的,能直接拿到最新的选中值。

修改MVC端的事件绑定:

@(Html.Kendo().DropDownList()
            .Name("TextActionDDL")
            .HtmlAttributes(new { style = "width:25%" })
            .OptionLabel("Select text message...")
            .DataTextField("TxtMessage")
            .DataValueField("TxtMessageText")
            .Events(x => x.Change("updateTextMsgBox")) // 把Select改成Change
            .Height(310)
            .DataSource(source =>
            {
                source.Read(read =>
                {
                    read.Action("Overview_Get_TextMessages", "Home");
                });
            })
        )

JS函数无需额外修改,即可正确获取最新值:

function updateTextMsgBox(e) {
    alert($("#TextActionDDL").data("kendoDropDownList").text());
    alert($("#TextActionDDL").val());
}

方案2:如果必须保留Select事件

可以通过事件参数e直接获取当前选中项的原始数据,不需要依赖控件的text/val方法:

function updateTextMsgBox(e) {
    // 获取选中项的数据模型
    var dataItem = this.dataItem(e.item);
    alert(dataItem.TxtMessage); // 对应DataTextField的内容
    alert(dataItem.TxtMessageText); // 对应DataValueField的内容
}

这样即使在Select事件里,也能拿到当前刚选中的项的正确值,不会出现滞后问题。

内容的提问来源于stack exchange,提问作者user1257758

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:32:54