0

我在 Drupal 7 中有一个自定义模块表单。代码如下所示

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'];
 }

所以这个简单的代码应该用'tables'选择的值更新#abcd标签。问题是它只适用于第一个选择。如果我选择 2013,它会在我的 #abcd 标签中返回“2013”​​文本。但是,当我选择 2012 年时,#abcd 标签保持不变。它仍然出现在 2013 年。

这是示例: http: //kuzaj.yamandi.com/pl/form_example_dynamic

有谁知道如何解决它?

4

1 回答 1

0

所以 'method' => 'replace' 属性将整个包装器替换为新文本。例子:

有例如div:

第一选择(例如 2013)将其更改为(注意不再有 #abcd 标签):

2013

然后,如果表单元素被更改,它会搜索 #abcd 标记,但没有类似的标记,因为它已经被“2013”​​替换。因此,与其使用“替换”方法,不如使用“html”。Html 方法替换标签的内容,但标签保持“不变”。

于 2013-04-11T10:50:19.347 回答