1

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

当我单击按钮时,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>

查询:

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;
}

没有什么复杂的...

4

1 回答 1

1

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

  1. 使用visibility: hidden而不是display: none;,如果这样做,您可能会在 DIV 高度方面遇到一些问题,因为它会占用渲染所需的空间,但它不可见。
  2. 使用 aScriptManager和 anUpdatePanel并将 div 和表单放在这些元素中,这样服务器就会知道您何时在客户端呈现 Button。另外,请确保您在ScriptManager

希望这可以帮助你

于 2012-12-23T05:09:22.367 回答