防止双击提交按钮,同时不压缩验证组



在 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"  />

一种古老的时尚方法是在第一次点击时隐藏按钮,在同一位置显示动画 gif - 并在请求完成后使按钮重新出现。

这将保持一切完好无损 asp.net 明智,将禁用用户的双重发布。您可以使用diff javascript方法来实现这一目标 - 但请记住,它必须运行得非常快。原生效果最好。不要从 DOM 中删除元素,只需使用 css 隐藏/显示两者。

我已经有好几年没有这样做了,但我记得很清楚 b/c 我在双重提交时遇到了很多麻烦。这个解决方案起到了作用。

最新更新