隐藏Div中的ASP.NET表单不起作用

时间:2012-12-22 22:33:14

标签: asp.net

我在Hidden DIV中有一个登录FORM,当我点击其他DIV时,我使用CSS display:none;隐藏了这个DIV,我使用jquery .slideDown()显示这个DIV,所以我可以使用此表格。

当我点击按钮时,OnClick="Login"似乎不起作用,当我从这个隐藏的div中删除此表单只是身体中的另一个地方时,它起作用了。有什么问题?

ASP.NET:

<div id="userCPContainer">
<form id="loginForm" runat="server">
    <asp:Label ID="Label1" runat="server" Text="Username" class="loginLabels"></asp:Label>
    <br />
    <asp:TextBox ID="usernameField" runat="server" MaxLength="50" class="loginFields"></asp:TextBox>
    <asp:Label ID="Label2" runat="server" Text="Password" class="loginLabels"></asp:Label>
    <br />
    <asp:TextBox ID="passwordField" runat="server" MaxLength="50" 
        TextMode="Password" class="loginFields"></asp:TextBox>


    <asp:Button ID="loginButton" runat="server" Text="Log in" onclick="Loginn" class="loginButton"/>
</form>
</div>

JQUERY:

function showUserCP() {

    $("#userCPContainer").slideDown(200);
    $(".userCPDiv").css("background-color", "#000000");
    $(".userCPDiv").css("border-color", "#000000");
}

function hideUserCP() {
    $(".userCPDiv").css("background-color", "rgb(43, 147, 206)");
    $(".userCPDiv").css("border-color", "rgb(43, 147, 206)");
    $("#userCPContainer").slideUp(200);

}

$(".userCPDiv").click(function (e) {
        //Either way, hide Main Menu
        hideMainMenu();
        if ($("#userCPContainer").is(":visible")) {
            hideUserCP();
        }
        else {
            showUserCP();
        }
        e.stopPropagation();

    });

CSS:

#userCPContainer
{
    overflow:hidden;
    border-style:solid;
    border-top-style:none;
    border-color:rgb(43,147,206);
    border-width:2px;
    position:absolute;
    right:0px;
    top:0px;
    display:none;
    z-index:1;
    width:300px;
    background-color:  #000000;
}

没有什么比这更复杂了......

1 个答案:

答案 0 :(得分:1)

当您使用CSS display: none;时,问题是DIV中的所有内容都会从HTML文档中完全删除,并导致ASP.NET在通过jQuery显示时无法识别此元素。我看到了可能的解决方案:

  1. 使用visibility: hidden代替display: none;,如果这样做,您可能会遇到DIV高度的问题,因为它会占用渲染所需的空间但不会显示。
  2. 使用ScriptManagerUpdatePanel并将div和表单放在这些元素中,以便服务器知道何时在客户端中呈现Button。另外,请确保在ScriptManager
  3. 中注册jQuery脚本

    希望这有助于你