2012-06-07 49 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;