0

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

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

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

请高手给我指路。

提前致谢。

4

3 回答 3

4

查看 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();
于 2013-05-03T17:02:31.277 回答
0

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

于 2013-05-03T17:02:04.057 回答
0

两种方式

在 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-06T11:42:35.947 回答