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延迟的主要内容,如果未能解决你的问题,请参考以下文章
如何延迟或异步此 WordPress javascript 片段以最后加载以加快页面加载时间?
如何让 Drupal 使用 Wordpress 形式的编辑代码?