加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在多个ajax调用完成之前,如何阻止表单提交? jQuery的

发布时间:2020-12-16 01:37:35 所属栏目:百科 来源:网络整理
导读:继p revious question后,我询问禁用提交按钮,直到所有ajax调用完成返回… 即使禁用按钮和警告标志,人们似乎仍然设法提交表单.我想这可能是在文本输入中按“输入”. 如何禁用整个表单,而不仅仅是提交按钮? 到目前为止的代码是: // if we're waiting for any
继p revious question后,我询问禁用提交按钮,直到所有ajax调用完成返回…

即使禁用按钮和警告标志,人们似乎仍然设法提交表单.我想这可能是在文本输入中按“输入”.

如何禁用整个表单,而不仅仅是提交按钮?

到目前为止的代码是:

// if we're waiting for any ajax to complete we need to disable the submit
$(document).ajaxStart(function() {
  $(".ajaxbutton").attr("disabled","disabled");
  // if it's taken longer than 250ms display waiting message
  timer = setTimeout(function() {
    $('#processingAlert').html(' ...please wait one moment');
    $('#processingAlert').show();
  },250);
})
$(document).ajaxComplete(function() {
  $(".ajaxbutton").removeAttr("disabled");
    $('#processingAlert').hide();
    // cancel showing the message when the ajax call completes.
clearTimeout(timer);
});

我应该提到的另一个可能导致问题的是,同时发生多个ajax调用,EG一个div接收隐藏的输入,另一个div在页面的其他地方显示例如价格总和.

一些ajax调用快速完成的事实是否会否定ajaxStart的禁用效果? EG ajax call1和ajax call2都触发了ajaxStart – call1很快就完成了,在我们等待call2完成时它会重新启用表单吗?

有没有更好的方法来做到这一点我们可以简单地测试所有ajax调用是否已经完成?

您可以为表单的submit事件添加事件处理程序.事件处理程序可以检查提交是否是允许的,如果没有则中止.这是一些文档: http://api.jquery.com/submit/

请注意,如果页面上的javascript在其中一个表单提交按钮上调用.click(),则表单将在不调用.submit()处理程序的情况下提交.这是一个奇怪的jQuery问题(http://groups.google.com/group/jquery-en/browse_thread/thread/1317bfd4e3a8b233?pli=1),我想jQuery人不会考虑错误.可能还有其他这样的情况,我希望不是.

如果您正在使用ASP.NET,则根据表单上的内容,ASP.NET可能会注入“__doPostBack”函数.您可能需要通过使用一些调用原始函数的自定义代码重新定义该函数来代替它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读