Search code examples
c#jqueryasp.nethtmllinkbutton

ASP LinkButton onclick show div


I'm new at Jquery and im trying to display a div on the LinkButton ClickEvent (If I use a button instead of a linkbutton it will work)

This is my Jquery code

<script type="text/javascript">
            $(document).ready(function () {
                $('#<%=lbLog.ClientID%>').click(function () {

                    $("#login").show(2000);
                    alert("hello");
                });
            });
        </script>

The hello message is displayed by not the div

and this is my html code:

<asp:LinkButton ID="lbLog" runat="server" onclick="lbLog_Click">Login</asp:LinkButton>
        <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
        <div id="login" style="display:none">            
            Username: <asp:TextBox ID="txtUsername" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rfvUsername" runat="server" ControlToValidate="txtUsername" Display="Dynamic" ErrorMessage="*" ValidationGroup="LogGroup">*</asp:RequiredFieldValidator>
            Password: <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox> <asp:RequiredFieldValidator ID="rfvPassword" runat="server" ControlToValidate="txtPassword" Display="Dynamic" ErrorMessage="*" ValidationGroup="LogGroup">*</asp:RequiredFieldValidator>
            <asp:Button ID="btnLog" runat="server" Text="Login" onclick="btnLog_Click" ValidationGroup="LogGroup" />
        </div>

Solution

  • The ASP.NET link button will cause a postback which will refresh the page and hide the div thanks to style="display:none" no matter how you change your jQuery function. Try this instead:

    <script type="text/javascript">
        $(document).ready(function () {
            $("#fakeLink").click(function () {
                $("#login").show(2000);
            });
        });
    </script>
    <style type="text/css">
        .fakeLink
        {
            color: blue;
            text-decoration: underline;
            cursor: pointer;
        }
    </style>
    
       <div>
        <span class="fakeLink" id="fakeLink">Login</span>
        <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
        <div id="login" style="display:none;">
            Username:
            <asp:TextBox ID="txtUsername" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rfvUsername" runat="server" ControlToValidate="txtUsername"
                Display="Dynamic" ErrorMessage="*" ValidationGroup="LogGroup">*</asp:RequiredFieldValidator>
            Password:
            <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rfvPassword" runat="server" ControlToValidate="txtPassword"
                Display="Dynamic" ErrorMessage="*" ValidationGroup="LogGroup">*</asp:RequiredFieldValidator>
            <asp:Button ID="btnLog" runat="server" Text="Login" OnClick="btnLog_Click" ValidationGroup="LogGroup" />
        </div>
    </div>