Javascript dropdownlist.selectedIndex导致ASP.net页面出错

时间:2012-02-01 14:14:14

标签: javascript asp.net

我试图根据是否从下拉列表中选择了一个值来启用/禁用按钮,并且由于某种原因,javascript没有获得下拉列表的选定索引。这是下拉列表的声明:

<asp:DropDownList ID="ddlMyDropDownList" runat="server">
    <asp:ListItem> </asp:ListItem>
    <asp:ListItem>Yes</asp:ListItem>
    <asp:ListItem>No</asp:ListItem>
</asp:DropDownList>

在后面的代码中我添加了onChange属性:

ddlMyDropDownList.Attributes.Add("onchange", "enableButton();")

这就是enableButton函数的样子,剥离到导致问题的部分:

function enableButton() {
    var ddl = document.getElementById('#<%= ddlMyDropDownList.ClientID %>');
    alert("Testing");
    var idx = ddl.selectedIndex;
};

正如所写,每当我更改下拉列表的值时,警报就会触发。但是,如果我将警报移到idx行之后:

function enableButton() {
    var ddl = document.getElementById('#<%= ddlMyDropDownList.ClientID %>');
    var idx = ddl.selectedIndex;
    alert("Testing");
};

它不会触发,表明ddl.selectedIndex以某种方式导致错误。为什么会发生这种情况,我该如何解决呢?假设我只想测试用户是否选择了第一个选项以外的其他选项,是否有更好/更简单的方法呢?

2 个答案:

答案 0 :(得分:2)

如果您alert(ddl),您可能会发现ddl为空,因为没有ID为#<%= ddlMyDropDownList.ClientID %>的元素。尝试从id字符串的开头删除#

答案 1 :(得分:0)

把它扔出你的JS函数:

<script type="text/javascript">
  var ddlMyDropDownList = '<%= ddlMyDropDownList.ClientID %>';

  function enableButton() {
    var ddl = document.getElementById(ddlMyDropDownList);
  }
</script>

或 - 尽可能更好 - 直接传递参考:

ddlMyDropDownList.Attributes.Add("onchange", "enableButton(this);")

然后你不需要找到元素:

function enableButton(ddl) {
    var idx = ddl.selectedIndex;  
}