2012-02-06 114 views
0

我有這樣的HTML代碼:淡入淡出通過asp.net按鈕

 function ToggleMenu() { 
      $('#Menu').fadeOut(500); 
     } 
    </script> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div id="Menu"> 
     <a class="MainMenu" href="#" onclick="DoSomething()">Fun</a> 

     <div id="Dropdown"> 
      <ul> 
       <li><a href="#">Item 1</a></li> 
       <li><a href="#">Item 2</a></li> 
       <li><a href="#">Item 3</a></li> 
       <li><a href="#">Item 4</a></li> 
       <li><a href="#">Item 5</a></li>     
      </ul> 
     </div> 
    </div> 
     <asp:Button ID="Button1" runat='server' Text="Toggle Menu" OnClientClick="ToggleMenu()" /> 
    </form> 
</body> 

我用OnClientClick ATTR爲asp:Button褪色菜單,但它淡出,然後一個回發後再次淡入,應該是什麼我做 ?

回答

1

在客戶端進行的任何更改都不會自動持久保存到服務器。由於服務器不知道它是隱藏的,它不會對更改做出反應。有一個簡單的解決方法。添加一個隱藏字段:

<asp:HiddenField id="Button1Status" runat="server" /> 

在隱藏按鈕,添加這個JS代碼:

$("#<%= Button1Status.ClientID %>").val("1"); 

然後在服務器上,在每一個回傳,檢查隱藏字段爲「1」,如果它是,設置Visible="false"style="display:none",以便ViewState可以保留此設置。注意:如果您設置了Visible="false",則該按鈕將不會呈現。

HTH。

+0

另一種方式。注意:我想通過asp按鈕淡出div。 – sap 2012-02-06 13:30:29

+0

如果您希望更改保留在服務器上,則必須使用隱藏字段來存儲狀態更改。 Hiddens回發到服務器,因此可以使用viewstate保留它們的狀態。如果你想淡出一個DIV,你可以存儲DIV的當前狀態,隱藏的可以用於當前狀態。因此,在頁面重新加載時,在文檔準備就緒或代碼隱藏後,您可以根據此隱藏字段重新初始化div的可見性。 – 2012-02-06 13:34:01

0

您需要禁用回發。

function ToggleMenu() { 
    $('#Menu').fadeOut(500); 
    return false; 
} 

「return false」將阻止回發。

或者,如果您不需要服務器端功能,則使用簡單的html輸入元素並分配onclick函數。

+0

不適合我>>>>再次它淡入 – sap 2012-02-06 13:29:56

+0

對不起,我錯過了你想保持這個狀態的事實。 Brians解決方案看起來很好。你需要有一個記住狀態的服務器端標誌。 – 2012-02-06 13:32:18