Javascript dropdownlist.selectedIndex在ASP.net页面导致错误
我试图根据是否从下拉列表中选择一个值来启用/禁用一个按钮,由于某种原因,JavaScript没有得到选定的索引下拉列表。这里的下拉列表中的声明:Javascript dropdownlist.selectedIndex在ASP.net页面导致错误
<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以某种方式导致错误。为什么会发生这种情况,我该如何补救?假设我只想测试用户是否选择了除第一个选项以外的任何其他选项,是否有更好/更简单的方法来执行此操作?
如果您alert(ddl)
您可能会发现ddl
为空,因为没有元素的ID为#<%= ddlMyDropDownList.ClientID %>
。尝试从id字符串的开头删除#
。
散列的好处。而不是返回null,我怀疑它会返回undefined。 – 2012-02-01 14:20:22
@JamieDixon是的,我认为你是对的,谢谢。 – 2012-02-01 14:23:51
其实alert(ddl)至少在FireFox中显示为“null”。谢谢你的收获。这些正是我轻易忽视的那些错误。 – 2012-02-01 15:48:28
把它扔出去您的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;
}
您确定您正在获取对ddl控件的引用吗?如果var ddl为空或未定义,则警报仍将触发。也许你可以从那里的断点进入代码,或者尝试检查一个不同的属性。 – DOK 2012-02-01 14:18:15
如果你提醒ddl,你会得到什么回报? – 2012-02-01 14:18:36