【问题标题】:Check validation and disable button on click单击时检查验证和禁用按钮
【发布时间】:2014-03-03 18:24:54
【问题描述】:

我有一个 ASP.NET 应用程序,我已经实现了以下代码来禁止用户双击和提交按钮,因此代码背后的方法不会执行一次。

OnClientClick="this.disabled = true; this.value = 'Submitting...';" UseSubmitBehavior="false" onclick="BtnSubmit_Click"

这工作得很好,但是在我实现了 javascript 表单验证的页面之一上,下面的代码不起作用:

OnClientClick="return validation(); this.disabled = true;"  UseSubmitBehavior="false"  onclick="BtnAdd_Click"

验证是为了确保用户不会留下任何空白字段,但是如果验证成功,单击按钮时,按钮会被禁用,但不会调用 onclick 方法。

为什么会发生这种情况?

【问题讨论】:

  • 您是否尝试过在提交事件时调用表单标签中的验证函数:<form action="" onSubmit="return validation()"> 并保持 onClick 不变?

标签: javascript asp.net button


【解决方案1】:

Rikket,你必须编写单独的代码来防止重复提交表单,一旦提交,一个 Jquery 函数可能会有所帮助,如下所示,把它放在你的 JavaScript 验证函数之后:

jQuery.fn.preventDoubleSubmission = function () {
            var $form = $(this);
            $form.on('submit', function (e) {
                if ($form.data('submitted') === true) {
                    e.preventDefault();
                } else {
                    $form.data('submitted', true);
                }
            }).find('input').on('change', function () {
                $form.data('submitted', false);
            });
            return this;
        };

并且可以在您在 else 中验证后调用:

 if (nullFieldTracked == 'true') {
                    alert(nullExceptionMsg);
                    return false;
                }
                else {
                    $('form').preventDoubleSubmission();
                }

【讨论】:

  • 它不是双重提交表单,而是双重提交方法背后的代码。我的描述可能有点误导。更新
猜你喜欢
  • 1970-01-01
  • 2022-10-24
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多