这听起来很容易,但我整个早上都在为此苦苦挣扎。
我有一个 asp.Net 页面和相应的代码隐藏页面。我的用户输入一个新密码,然后页面后面的代码检查它是否正常(足够长,一些正则表达式来检查不允许的字符等)。如果密码OK,后面的代码会执行sql查询来更新数据库。
如果查询成功,我想隐藏密码输入 div 并显示密码成功创建 div,这为我的用户提供了进一步的说明。我总是使用 jQuery 在 php 中轻松完成此操作。
我的问题:我刚才描述的工作都是在服务器端完成的。我可以使用 ClientScriptManager (RegisterStartupScript) 将适当的 jQuery 脚本发送回客户端。很好,花花公子,但是对服务器的回调会刷新页面,因此页面会刷新并恢复到原始外观。如果您仔细观察,您会看到 div 以我想要的方式隐藏和显示,但在几分之一秒内,它们就会恢复到原来的方式——我假设是因为回调正在刷新页面。
执行对服务器的调用时,是否可以显示/隐藏页面代码中的 DOM 元素?任何帮助表示赞赏。
编辑
问题出在 asp:button 控件本身。我在以下代码中得到了相同的行为,它根本不使用页面后面的代码。如果我用普通的 HTML 输入控件替换 asp:button 控件,它工作正常。
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$('document').ready(function () {
$('.MyButton').click(function () {
$('#MyTable').toggle();
})
})
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Button ID="Button1" runat="server" Text="Button" class="MyButton" />
<table id="MyTable" >
<tr>
<td>This</td>
<td>is</td>
</tr>
</table>
</asp:Content>