在不压制validationGroup的情况下,防止双击提交按钮

时间:2018-06-05 20:52:42

标签: javascript asp.net

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

1 个答案:

答案 0 :(得分:0)

一种古老的方式是在第一次点击时隐藏按钮,在同一个地方显示动画gif - 并在请求完成后重新显示该按钮。

这将保持所有内容完整的asp.net,将禁用用户的双重发布。你可以使用diff javascript方法来实现这一点 - 但请记住它必须运行得非常快。原生效果最佳。不要从DOM中删除元素,只需用css隐藏/显示它们。

我必须这么做多年,但我记得很好b / c我在双提交时遇到了很多麻烦。这个解决方案充当魅力。