【发布时间】:2025-12-15 05:50:01
【问题描述】:
我有一个使用 Razor 视图和 Kendo UI Web 控件的 C# Web 应用程序。在我的表单上,我有一个 DropDownList 定义如下:
@(Html.Kendo().DropDownListFor(m => m.MentalStatus).HtmlAttributes(new { id = "cmbMentalStatus", @class = "k-dropdown-width-30", @tabIndex = "1", style = "width:60px", onchange = "OnChangeC0100(cmbMentalStatus);" }).BindTo(ViewBag.ZeroToOne).OptionLabel(" "))
onchange 属性指的是这个 JS 方法:
function OnChangeC0100(cmb)
{
var stupidJS = document.getElementById("cmbV14_Adm_C0200_RepetitionThreeWords_Tab6");
stupidJS.disabled = (cmb.options[cmb.selectedIndex].value == "0");
}
当第二行尝试执行时,我得到了这个错误
“无法读取未定义的属性‘未定义’”
我做错了什么?如果我设置断点,cmb 不是null。 stupidJS 不是 null。
根据this link,disabled 是要设置的属性。这不准确吗?
编辑:我看过这些问题:
How to Get Dropdown's Selected Item's text in Kendo UI?
how to get selected value for Kendo DropDownList
http://www.telerik.com/forums/dropdownlist-getting-clientside-value-on-selected-item-in-mvc
以及此处的文档; http://demos.telerik.com/kendo-ui/dropdownlist/api
但是无论我在 Watch 窗口中尝试什么,我都无法让它工作:
第一个是最接近的;至少它返回一个值,但它不是正确的。我选择了文本和值都为“1”的项目,但它给出了一个空字符串。屏幕截图中没有显示,但$("#cmb").kendoDropDownList().val() 给出了undefined。为什么如果我硬编码对控件的引用,它有点工作,但作为参数传递给方法的对象却不起作用?
【问题讨论】:
-
"
cmb不是null",但它是什么?该错误表明它可能与此有关,而不是stupidJS.disabled- 它正在读取一个属性,并且它正在报告它正在尝试读取的属性名称 (cmb.selectedIndex) 和它正在尝试读取的对象的undefined它在 (cmb.options) 上,表明cmb没有这些属性中的任何一个。它看起来应该是你的<select>,但你需要调试它以确保它是你认为的那样。 -
@JamesThorpe
cmb是我在文章开头的 razor sn-p 中创建的控件。从this SO post 这就是我确定这就是您访问下拉列表的选定项目的方式
标签: javascript