【问题标题】:How to restrict user from submitting the form twice?如何限制用户提交表单两次?
【发布时间】:2013-05-03 16:58:32
【问题描述】:

我有一个 asp.net 表单,它允许用户提交一个注册表单,该表单使用 Web 服务在内部发送/存储所有这些值到 SharePoint 列表中,因此在提交页面处理时间比正常时间长一点表格。

页面重定向到感谢页面之前的平均时间,用户倾向于再次点击提交按钮,这导致了同一记录的多次提交。

请提出一种限制此提交的方法,在单击按钮时,我正在使用 jquery 函数进行数据验证,我曾尝试在那里使用 btn.disable = true 方法,但是一旦到达 else 块(通过验证后这就是 disable = true 代码所在的地方)它在阅读 btn.disable = true 语句后不提交表单。

专家,请给我指路。

提前致谢。

【问题讨论】:

标签: c# javascript jquery asp.net


【解决方案1】:

查看 Nathan Long 的插件:https://stackoverflow.com/a/4473801/1414562

{修改为允许在输入更改时重新提交表单}

// jQuery plugin to prevent double submission of forms
jQuery.fn.preventDoubleSubmission = function() {
  var $form = $(this);
  $form.on('submit',function(e){ //on here instead of bind    
    if ($form.data('submitted') === true) {
      // Previously submitted - don't submit again
      e.preventDefault();
    } else {
      // Mark it so that the next submit can be ignored
      $form.data('submitted', true);
    }
  }).find('input').on('change',function(){
       $form.data('submitted',false);
  });

  // Keep chainability
  return this;
};

像这样使用它:

$('form').preventDoubleSubmission();

【讨论】:

  • 如果表单数据发生变化,我真的想再次提交,这可能行不通...提交仍然是真的?
  • @roasted :很棒的函数,就像一个魅力,你唯一需要确保的是在 JavaScript 完成其他验证检查的 else 块中调用该函数。再次感谢。
【解决方案2】:

如您所见,如果您在 onclick 处理程序中禁用该按钮,它不会将请求发送到服务器。解决此问题的简单“技巧”是使用setTimeout 安排一个函数运行,例如5ms,而不是立即禁用按钮,这将禁用按钮;这将允许在按钮被禁用之前将请求发送到服务器,而不会留出足够的时间让用户实际单击它两次。

【讨论】:

    【解决方案3】:

    两种方式

    在 Jquery 中或通过 C#

    jQuery

    ​​>
     $("#btnSubmit").live("click",(function(e) {
        this.disabled = true;
        /Do Something /
      this.disabled = false;
    return false;}));
    

    C#

    protected void btnSubmitClick(object sender, EventArgs e)
    {
    btnSubmit.Enabled = false;
    /Do Something/
    btnSubmit.Enabled = true;
    }
    

    希望对你有帮助

    非常感谢 安娜

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 2011-06-17
      • 2020-11-23
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 2013-03-27
      • 2014-11-03
      • 2015-04-04
      相关资源
      最近更新 更多