繁体   English   中英

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

[英]Prevent double click on submit button while not supressing validationGroup

在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隐藏/显示这两个元素即可。

自从我这样做以来已经有好几年了,但是我记得很清楚,因为重复提交我遇到了很多麻烦。 该解决方案起到了很大的作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM