0

我有以下代码......

<head>
<script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="Scripts/hidepanel.js" type="text/javascript"></script>
</head>
<body>
    <div id="outboundForm">
    <p>
        <asp:Button ID="btnSubmit" ClientIDMode="Inherit" runat="server" TabIndex="17" CssClass="btnSubmit"
            OnClick="btnSubmit_Click" meta:resourcekey="btnSubmitResource1" />
        <asp:Button ID="btnReset" runat="server" CssClass="btnReset" OnClick="btnReset_Click"
            meta:resourcekey="btnResetResource1" />
    </p>
</div>
<div id="MailPreviewDiv">
    <asp:Label ID="lblPreview" runat="server" Visible="false" Text="" />
</div>

我的 hidepanel.js 看起来像这样....

$(document).ready(function () {
    d = new Date();
    d = d.getTime();
    if ($('#reloadValue').val().length == 0) {
        $('#reloadValue').val(d);
        $('#MailPreviewDiv').
    } else {
        $('#reloadValue').val('');
    }

    $('#MainContent_btnSubmit').click(function () {
        $('#outboundForm').hide("slow");
        $('#MailPreviewDiv').show("slow");
    });
});

现在,默认情况下,我希望MailPreviewDiv隐藏,并且只有当我单击时btn_submit,我才希望MailPreviewDiv看到。这适用于传统的 HTML,但是一旦我将它添加到 .NET,就会发生疯狂的事情。当我单击提交时,我可以看到转换发生,但是我留下了两个 div 仍然显示并且outboundFormdiv 仍然可见。

我观察到的是 javascript 甚至被触发,然后在我的 .net 鼠标点击甚至被触发之后,我可以看到一个转换并且两个 div 都可见。有人可以提供一些建议吗...

这可能与部分回发有关,但我不确定....

4

2 回答 2

1

您的页面正在执行回发,因此所有 html 元素都会立即失去 jquery 效果。您需要在回发后使用 RegisterStartupScript http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx在服务器端注册 js 代码

于 2012-07-23T14:55:25.990 回答
0

也许尝试将 outboundForm 设置为 runat="server" 并在服务器端设置中将其可见性设置为 false。

<div runat="server" id="outboundForm" >

代码隐藏

outboundForm.Visible = false;

似乎 JS 运行良好,但服务器正在重新加载回发时隐藏的 div。

您的 JS 有语法错误 $('#MailPreviewDiv')。<-- 不完整

但我认为那是因为您正在简化此处发布的内容。

于 2012-07-23T14:45:24.210 回答