在asp.net应用程序中,当我在一个按钮上多次单击时,它会多次提交请求。当我尝试实现一个javascript函数,以使它只提交一次请求。该解决方案有效,但遗憾的是它抑制了验证组,换句话说,它使表单的验证组件无法运行。我想要一个防止双击的解决方案,并保持我的表单的验证可操作。
这是我用来阻止双击
的javascript功能 var submit = 0;
function CheckDouble() {
if (++submit > 1) {
return false;
}
}
这是我的按钮组件
<asp:Button ID="cmdSaveExpense" runat="server" Text="140" tooltip="Save and close" CausesValidation="true" ValidationGroup="NewExpense" CssClass="button2" OnClick="return CheckDouble()" />
以下是被抑制的验证器
<asp:RequiredFieldValidator ID="AmtRequired" runat="server" ControlToValidate="txtAmt" ErrorMessage="* An amount is required" ValidationGroup="NewExpense" Display="Dynamic" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="cboCat" ErrorMessage="" Text="* An expense type is required" ValidationGroup="NewExpense" Display="Dynamic" />
答案 0 :(得分:0)
一种古老的方式是在第一次点击时隐藏按钮,在同一个地方显示动画gif - 并在请求完成后重新显示该按钮。
这将保持所有内容完整的asp.net,将禁用用户的双重发布。你可以使用diff javascript方法来实现这一点 - 但请记住它必须运行得非常快。原生效果最佳。不要从DOM中删除元素,只需用css隐藏/显示它们。
我必须这么做多年,但我记得很好b / c我在双提交时遇到了很多麻烦。这个解决方案充当魅力。