fadeIn fadeOut由asp.net按钮

时间:2012-02-06 13:22:10

标签: asp.net

我有这个HTML代码:

        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淡出菜单,但它淡出然后在回发后再次消失,我该怎么办?

2 个答案:

答案 0 :(得分:1)

客户端中所做的任何更改都不会自动保留到服务器。由于服务器不知道它被隐藏了,因此它不会对更改做出反应。有一个简单的解决方法。添加隐藏字段:

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

在隐藏按钮时,添加以下JS代码:

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

然后在服务器上,在每次回发时,检查隐藏字段是否为“1”,如果是,则设置Visible="false"style="display:none"以便ViewState可以保留此设置。注意:如果您设置Visible="false",该按钮将根本不会呈现。

HTH。

答案 1 :(得分:0)

你需要禁用回发。

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

“return false”将阻止回发。

或者如果你不需要服务器端功能,那么使用简单的html输入元素并分配onclick功能。