2013-04-11 47 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方法替换标签的内容,但标签保持“未触及”。

相关问题