当前位置: 首页>>建站开发>>正文


如何以编程方式触发启用AJAX的表单提交按钮?

webfans 建站开发 , , , 去评论

问题描述

我正在尝试以编程方式(使用jQuery)以Drupal形式触发具有AJAX行为的按钮,但到目前为止jQuery('#edit-submit').click()没有做任何事情。

真正的鼠标点击该按钮按预期工作。任何想法如何使其工作?

最佳解决办法

jQuery('#edit-submit').mousedown() – 显然有很大的不同。

次佳解决办法

实际上,没有必要猜测。

你应该使用Drupal行为

Drupal.behaviors.yourFunctionName = {
    attach:function (context, settings) {

       // Your code goes here....

    }
}

这将使您可以访问设置’ajax属性,

Drupal.behaviors.yourFunctionName = {
    attach:function (context, settings) {

       console.log(settings.ajax);

    }
}

根据您的配置,您应该看到一个触发元素列表,其中包含各种属性,例如回调函数的名称,选择器的ID以及触发事件的名称。

然后,您可以使用相关信息来触发您的活动。

// $(selector).trigger(eventName);
// for example...
$('#edit-product-id-15', context ).trigger('change');

第三种解决办法

创建一个如下所示的ajax提交。

 $form['button'] = array(
    '#type' => 'button',
    '#value' => 'Click',
    '#ajax' => array(
      'callback' => '_kf_reading_user_points',
      'wrapper' => 'reading-user-points',
      'method' => 'replace',
      'event' => 'click',
    ),
  );

function _kf_reading_user_points(&$form, &$form_state) {
  // Something within the callback function.
}

然后jquery .click()事件将以drupal ajax形式工作。

第四种办法

您也可以使用.trigger() jQuery方法。 $('#element').trigger('click');

第五种办法

在我的情况下,上面推荐的解决方案对我不起作用,但提到.mousedown()导致了以下对我有用的想法(Drupal 7):

$('#custom-submit-button').click(function() {
  $('#ajax-submit-button').trigger('mousedown');
});

有关”why”的一些有用的背景信息,这是#ajax_prevent下的Form API参考中的情况

第六种办法

查看Better Exposed Filters模块,他们通过查找$(。ctools-auto-submit-click’)并触发点击来提交AJAX表单。

<?php
// ... near line 190 of better_exposed_filters.js

// Click the auto submit button.
$(this).parents('form').find('.ctools-auto-submit-click').click();
?>

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2073.html,转载请务必附带本地址声明。