来自ASP控件的客户端JavaScript调用不会重置可见性

时间:2010-01-03 21:49:55

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

我有一个javascript来调用时启用文本框,我想在用户从下拉列表中选择值“Custom”时触发此代码,以便我可以显示/隐藏这些新文本框。

function setVisibility(DropDownListID) {
    var element = document.getElementById(DropDownListID);
    var element1 = document.getElementById("TestBox1");
    if (element.value == "Custom") {
        element1.visible = !element1.visible ;
    } 

<asp:DropDownList ID="DateRangeDropDownList" runat="server" Enabled="True" onChange="setVisibility('DateRangeDropDownList');">
                     <asp:ListItem>Some Value</asp:ListItem>
                        <asp:ListItem>Custom</asp:ListItem>
                    </asp:DropDownList>

<asp:TextBox ID="TestBox1" runat="server"></asp:TextBox>

由于某种原因,它似乎不起作用。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

因为ASP.NET渲染的控件与您在函数调用中指定的不同。使用control的ClientID属性获取服务器端控件的呈现ID属性。在这里,我将下拉列表作为参数,并通过它ClientID访问您的文本框:

function setVisibility(yourDropdown) {
var element1 = document.getElementById(<%= TestBox1.ClientID %>);
if (yourDropdown.value == "Custom") {
    element1.visible = !element1.visible ;
} 

<asp:DropDownList ID="DateRangeDropDownList" runat="server" Enabled="True" 
    onChange="setVisibility(this);">
         <asp:ListItem>Some Value</asp:ListItem>
         <asp:ListItem>Custom</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="TestBox1" runat="server"></asp:TextBox>