2013-04-11 67 views
0

我有一個自定義模塊的形式在Drupal 7中的代碼看起來像這樣的Drupal 7 Ajax表單 - 選擇元素

function form_example_dynamic_form($form, &$form_state) { 

$form['tables'] = array(

      '#type' => 'select', 
      '#options' => drupal_map_assoc(array("2012", "2013")), 
      '#title' => t('Select year:'), 

      '#ajax' => array(
       'callback' => 'form_example_dynamic_myajax', 
       'wrapper' => 'abcd', 
       'effect' => 'fade', 
       'method' => 'replace', 
       ), 

      ); 

return $form; 
} 

function form_example_dynamic_myajax($form, $form_state) { 
    return $form_state['values']['tables']; 
} 

因此,這個簡單的代碼應與「表的值更新#abcd標籤' 選擇。問題是,它只適用於第一次選擇。如果我選擇2013,則會在我的#abcd標記中返回「2013」​​文本。但是,當我選擇2012年時,#abcd標記保持不變。它仍然apperas 2013年

這裏是例子:http://kuzaj.yamandi.com/pl/form_example_dynamic

有誰有任何想法如何解決呢?

回答

0

所以'method'=>'replace'屬性將整個包裝器替換爲新的文本。例如:

還有就是如格:

第一選擇(如2013),它改變(注意,沒有更多的#abcd標籤):

話又說回來如果表單元素被改變,它會搜索一個#abcd標籤,但沒有什麼像它已被替換爲「2013」​​。因此,而不是使用'替換'方法,它應該是'html'。 Html方法替換標籤的內容,但標籤保持「未觸及」。

相關問題