【发布时间】:2016-03-12 18:58:07
【问题描述】:
我有一个“时事通讯”小部件,当用户按下按钮时它可以展开。展开的容器内是一个输入框以及一个“提交”按钮。我的代码隐藏检查电子邮件是否有效,如果有效则发送邮件。如果电子邮件无效,则会将错误消息放入标签中。
问题是当我单击提交按钮时,jQuery 函数会重置并且容器不再展开。
$('.widget').click(function () {
$('.widget').addClass('wdly');
$('.widly').addClass('window');
});
$('.hide1').click(function () {
$('.widget').removeClass('wdly');
$('.widly').removeClass('window');
});
<div class="widget">
<span class="mail" style="margin-left: 3px">Newsmail</span>
</div>
<div class="widly">
<span class="hide1"></span>
<asp:TextBox ID="txtEmail" runat="server" CssClass="form-control newsmail"></asp:TextBox>
<asp:Label ID="emailRegEx" runat="server" Text="Label" style="position:absolute; margin-top: 50px; margin-left: 60px;" Visible="false"></asp:Label>
<asp:Button ID="submit" runat="server" Text="Submit" CssClass="btn btn-lg btn-success submit" OnClick="submit_Click1" />
</div>
protected void submit_Click1(object sender, EventArgs e)
{
if (Regex.IsMatch(txtEmail.Text, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.IgnoreCase))
{
// send email
}
else
{
emailRegEx.Visible = true;
emailRegEx.Text = "Invalid E-mail format";
}
}
我想我正在寻找的是某种部分负载,它使 DOM 记住我的小部件的当前设置,而不是将其回滚到初始设置。
【问题讨论】:
-
问题是因为单击按钮会导致页面重新加载(因为数据往返于服务器),因此页面从其起始状态再次加载。如果您想避免这种情况,您要么需要存储页面状态(cookies、sessionStorage、localStorage 等),要么更改页面逻辑以使用 AJAX。后者更可取,尽管当您的一只手被 WebForms 绑在背后时可能是一个复杂的过程。
-
您正在发布到服务器,因此页面会完全重新加载。如果您想要部分更新,请使用 UpdatePanel 或进行您自己的 ajax 调用。
-
嗯,我从来没有在我的学校学习过 .NET MVC。但是我对ajax的经验很模糊。你知道我应该在这个问题上寻找什么 - 教程等吗?
-
我只是简单地浏览了一下。如果我理解正确,我会留下 ajax 来处理回发,以便“ajax 更新”而不是整个页面?
标签: javascript c# jquery asp.net