Drupal 7 Field API:如何以编程方式发送表单元素属性 #ajax 指定的AJAX请求

Drupal 7 Field API: how to programmatically send AJAX request specified in #ajax property of form element?

本文关键字:#ajax 属性 元素 表单 请求 AJAX 方式发 API Field 编程 Drupal      更新时间:2023-09-26

我正在使用Drupal 7字段API通过AJAX重新加载部分表单。我有一个进行调用的按钮,但我想删除它并以编程方式进行调用,作为对特定事件的响应。这是我的 AJAX 按钮代码:

$form['documents']['reload_document_list_button'] = array(
  '#type' => 'button',
  '#value' => 'Обновить список документов',
  '#ajax' => array(
    'callback' => 'reload_document_list',
    'wrapper' => 'document-list',
    'method' => 'replace',
  ),
);

(有关详细信息,请参阅 http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#ajax。有没有办法做到这一点?

附言我知道我可以设置按钮样式以使其不可见并触发"单击"事件,但我正在寻找一种更整洁的方式来做到这一点。

我认为有两种

方法可以做到这一点:

首先,您可能已读取的 #ajax 属性接受event密钥。默认情况下,对于按钮元素,此事件为 mousedown 。(你可以在这里查看)您可以将其更改为自定义事件,例如customEvent并从 Javascript 代码中触发此自定义事件,jQuery('#button-id').trigger('customEvent');

或者,您可以夹住#ajax属性本身。设置 AJAX 端点(使用 hook_menu ),并将reload_document_list设置为其回调。添加自定义 Javascript 以发出请求并处理响应。当你使用来自misc/ajax.js #ajax时,你可以看看Drupal发送AJAX请求的方式,如果你愿意,可以把它用作参考。