我有一个使用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");
}
当第二行尝试执行时,我收到此错误
"无法读取属性' undefined'未定义"
我做错了什么?如果我设置了断点,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
。为什么如果我对控件的引用进行硬编码,它的排序是有效的,但是作为参数传递给方法的对象不起作用?
答案 0 :(得分:0)
我能够找到我的实际任务的解决方案:
function OnChangeC0100(cmb)
{
var cmbVal = $("#" + cmb.id).val();
var enabled = (cmbVal != "0");
$("#cmbSomeControl").kendoDropDownList({ enable: enabled });
$("#cmbSomeOtherControl").kendoDropDownList({ enable: enabled });
if (cmbVal == "0")
document.getElementById("cmbV14_Adm_C900A_MemoryRecall_Season_Tab6").focus();
}
我修改了我的kendo DropDownList以将this
传递给方法,而不是包含ID的字符串。