Drupal 8表单提交Ajax表单后的回调

Posted

技术标签:

【中文标题】Drupal 8表单提交Ajax表单后的回调【英文标题】:Callback after Ajax form submit by Drupal 8 form 【发布时间】:2020-02-13 21:56:09 【问题描述】:

我有一个 Drupal 8 表单(ID:regform),我必须在表单 AJAX 提交后做一些 JS 触发器。

例如表单包含选择计划字段,表单提交后,我必须在同一页面的另一个块中显示一些计算价格,所以我试图在 Ajax 提交后选择一个回调函数。我该怎么办?

【问题讨论】:

【参考方案1】:

这在 Drupal 9.2.10 中对我有用:(2021 年 12 月)

jQuery(document).ajaxComplete(function(event, xhr, settings) 
  if (settings.data.indexOf( "form_id=modal_test_form") != -1) 
    console.log('Hello!');
  
);

【讨论】:

【参考方案2】:

希望您可以使用以下代码解决您的问题。您可以将此 sn-p 添加到位于您的自定义主题或模块中的 javascript 文件中。

(function ($, Drupal) 
  Drupal.behaviors.custom = 
    attach: function (context, settings) 
      $(document).ajaxComplete(function (event, xhr, settings) 
        if (settings.data && settings.data.indexOf("form_id=regform") != -1) 
          //your code here
        
      );
    
  
)(jQuery, Drupal);

【讨论】:

它在 drupal 9 上不起作用,这个函数永远不会被调用 $(document).ajaxComplete(function (event, xhr, settings)

以上是关于Drupal 8表单提交Ajax表单后的回调的主要内容,如果未能解决你的问题,请参考以下文章

bootstrap 表单验证FormValidation ajax提交后怎么恢复初始状态

Drupal 8 - 将 Web 表单提交到外部 API

使用“提交”回调和 $.ajax 发布时多次提交的表单

如何在 ajax 回调中重置表单?

AJAX 表单验证并提交

如何 - 构建自定义 drupal 8 模块表单