1

谁能告诉我如何在 Drupal 的 ajax 代码完成时执行我的自定义 jQuery 代码?

上下文是一个显示表单的 Drupal 模块。其中一个表单组件是一个选择列表,其中显示了以下代码:

$form['selected'] = array(
'#type' => 'select',
'#title' => t('add to sequence ...'),
'#options' => $types,
'#default_value' => $types['select'],
'#description' => t('Select an option.'),
'#ajax' => array(
    'callback' => '_ajax_selected_node_callback',
),
);

_ajax_selected_node_callback每次选择一个选项时,Drupal 都会正确调用。我需要在选择列表 AJAX 回调完成后立即执行我的自定义 jQuery 代码。

4

1 回答 1

1

一种方法是在 AJAX 回调完成后使用 Drupal.settings 将信息传递给您的自定义 JS 文件。因此,在您的表单中,您将添加如下内容:

if (isset($form_state['values']['selected'])) {
  drupal_add_js(array('MODULENAME' => array('selected' => $form_state['values']['selected'])), 'setting');
}

在您的自定义 JS 文件中,您将拥有如下内容:

(function ($) {

Drupal.behaviors.MODULENAME = {
  attach: function(context, settings) {
    // listen for select to change and get the value if it does
    if (typeof settings.MODULENAME != "undefined" && typeof settings.MODULENAME.selected != "undefined") {
      $value = settings.MODULENAME.selected;
      // do something
    }
  }
};

})(jQuery);

我没有检查上面的错误,但我的意思是使用 Drupal.settings。

于 2012-06-22T13:30:59.720 回答