【问题标题】:get text vaule of dropdownlist client side获取下拉列表客户端的文本值
【发布时间】: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


【解决方案1】:

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'

【讨论】:

  • 是的,我认为 onchange 应该会更好。虽然它是“未分配”,但它是一种让它出现在排序列表顶部的廉价方法。不是让它在顶部的最佳方式,但它适用于任何地方(SQL、asp 等)谢谢!
  • @kralco626 - 您缺少一组括号,还要检查 ' UNASSIGNED''UNASSIGNED'(没有空格)。
  • @Nick - 我尝试了 onchange 和 onclick。我也试着说“.disabled = false;”这没有用。所以要么事件没有触发或其他东西。这不是文本值的评估...
  • @Nick - 我试过了,但没用:ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = false ;");
  • @kralco626 - 查看页面时,实际呈现的是什么,<select> 标记是什么样的?
【解决方案2】:

我认为应该是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2012-12-04
    相关资源
    最近更新 更多