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

2019-09-18 03:08发布

我使用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了解详细信息。)有没有办法做到这一点?

PS我知道我可以风格的按钮,使其不可见并触发“click”事件,但我要寻找一个更合适的方法来做到这一点。

Answer 1:

有两种方法可以做到这一点,我认为:

首先, #ajax你可能已经阅读属性接受一个event的关键。 在默认情况下按钮元素,此事件mousedown 。 (您可以检查它在这里 )你可以把它改成一个自定义事件,比如customEvent ,并从你的Javascript代码,触发该自定义事件jQuery('#button-id').trigger('customEvent');

或者,您可以吸住#ajax财产本身。 建立一个AJAX端点(使用hook_menu ),并设置reload_document_list作为其回调。 添加自定义JavaScript来发出请求和处理响应。 你可以看一看,当您使用Drupal发送AJAX请求的方式#ajaxmisc/ajax.js ,如果你想使用它作为参考。



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