2012-06-07 24 views
0

ASP面板应通过ASP复选框使用JavaScript函数制作ASP面板通过ASP复选框可见的JavaScript

我公司要我改变某个特定页面上的编码来使人们看到,在要求是当你点击一个复选框时,一个面板应该变得可见,但它不应该被回发。 所以他们要求我使用JavaScript并实现这个要求。

我试过这段代码,当我看到它时,JavaScript函数找不到id,因为面板将被动态创建。所以任何人都可以帮助我做到这一点?

重要提示:它应该停止发回!!!

我的代码是:

<script type="text/javascript"> 
    function fun1() 
    { 
     if (document.getElementById("CheckBox1").checked == true) 
     { 
      document.getElementById("Panel3").visible = true; 
     } 
    } 
</script> 

<form id="form1" runat="server"> 
    <asp:Panel ID="Panel1" runat="server" Height="89px"> 
     <asp:CheckBox ID="CheckBox1" runat="server" OnClick="fun1()" /> 
    </asp:Panel> 
    <br /> 
    <asp:Panel ID="Panel3" runat="server" Height="91px" Visible="False"> 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
     <br /> 
     <br /> 
     <asp:Button ID="Button2" runat="server" Text="Button" /> 
    </asp:Panel> 
    <br /> 
</form> 
+0

对不起document.getElementById(“Panel3”)。visible = true; –

回答

0

面板是一个服务器端控制,当它呈现给它呈现为一个DIV HTML元素的浏览器,你应该使用

function toogleDisplay(sender) 
{ 
if(sender.checked) 
    document.getElementById('<%= Panel3.ClientID %>').style.display = 'block'; 
else 
    document.getElementById('<%= Panel3.ClientID %>').style.display = 'none'; 
} 

,并为您的ASP CheckBox控件,你应该加入这样的代码

protected void Page_Load(object sender, EventArgs e) 
    { 
      checkbox1.Attributes.Add("onClick", "toogleDisplay(this);"); 
Panel3.Style.Add(HtmlTextWriterStyle.Display, "none"); 
    } 
+0

修道者,我想你的代码,但它给了 –

+0

“checkbox1”并不在当前的背景下存在的名称 –

+0

与CheckBox1替换它的错误, 其实这是你的ASP CheckBox控件的ID, 你应该ID替换你的复选框控件。 – yogi

1

它应该帮助你...

var panelControls = document.getElementById("<%=mypanel.ClientID%>").getElementsByTagName("input"); 

    for (var i = 0; i < panelControls .length; i++) 
     panelControls [i].disabled = true;