2012-06-22 43 views
1

任何人都可以告訴我如何執行我的自定義jquery代碼時,Drupal的ajax代碼完成?Drupal的形式JavaScript延遲

上下文是一個顯示錶單的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代碼。

任何人都可以幫忙嗎?

回答

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。

+0

謝謝。這似乎有效 – sisko