【发布时间】:2010-09-01 13:10:47
【问题描述】:
我正在尝试将客户端事件添加到下拉列表中,并且我需要访问当前选定的文本。我试过了:
ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.options[this.selectedIndex].text.Equals(' UNASSIGNED');");
和
ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.text.Equals(' UNASSIGNED');");
当事件被触发时,这两者都会给我运行时错误。
访问此文本属性客户端的正确方法是什么?
我试过了,但它没有启用复选框...
ddl_tech.Attributes.Add("onchange", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.options[this.selectedIndex].text == ' UNASSIGNED';");
回答:
好吧,除了必须使用 == 而不是 .Equals 之外,当您在服务器端设置 checkbox.enabled = false 时,它会在标签中敲击复选框并将其设置为 disabled=true;因此您必须同时设置 checkbox.disabled = false 和 checkbox.parentElement.disabled = false;在客户端启用复选框!
解决办法:
ddl_tech.Attributes.Add("onchange", "document.getElementById('" + chk_techreview.ClientID + "').parentElement.disabled = (this.options[this.selectedIndex].text == 'UNASSIGNED'); document.getElementById('" + chk_techreview.ClientID + "').disabled = (this.options[this.selectedIndex].text == 'UNASSIGNED');");
感谢您的帮助!
【问题讨论】:
-
“未分配”是指 option.text 还是 option.value?
-
文本。有不同的价值。但是,即使我在事件触发时输入 == 'abc123',它也会评估为 false,并且检查框应该禁用 = false。所以我认为这不是问题。
标签: javascript asp.net drop-down-menu client