获取dropdownlist客户端的文本值

时间:2010-09-01 13:10:48

标签: javascript asp.net drop-down-menu client

我正在尝试将一个客户端事件添加到下拉列表中,我需要访问当前选定的文本。我试过了:

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');");

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

JavaScript中的字符串没有.Equals(),而是使用===运算符,如下所示:

ddl_tech.Attributes.Add("onchange", "document.getElementById('chk_techreview').disabled = ( this.options[this.selectedIndex].text === 'UNASSIGNED');");

You can give it a try here,我还将事件更改为onchange,因为可能更多的是您所追求的内容。另外,根据您的选择,它可能只是'UNASSIGNED'而不是' UNASSIGNED'

答案 1 :(得分:1)

我认为应该是:

ddl_tech.Attributes.Add("onclick", "var s = document.getElementById('" + chk_techreview.ClientID + "'); s.disabled = (s.selectedIndex == -1 || s.options[s.selectedIndex].text == ' UNASSIGNED ');");