Drupal形式JavaScript延迟

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drupal形式JavaScript延迟相关的知识,希望对你有一定的参考价值。

任何人都可以告诉我当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',
),
);

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

答案

一种方法是使用Drupal.settings在AJAX回调完成后将信息传递给您的自定义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。

以上是关于Drupal形式JavaScript延迟的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 6 视图 2:PHP 片段

如何延迟或异步此 WordPress javascript 片段以最后加载以加快页面加载时间?

如何让 Drupal 使用 Wordpress 形式的编辑代码?

如何让 Drupal 使用 Wordpress 形式的编辑代码?

Android中切换标签片段之间的延迟

Drupal标题徽标和网站名称片段页面.tpl.php