【发布时间】:2018-04-01 14:05:19
【问题描述】:
我在一个页面上有两个 drupal 表单,但我不明白 ajax 回调如何根据第一个表单的值更改一个表单的值。
我的表格:
function my_form($form, &$form_state) {
$form['first_form'] = [
'#title' => t('Choose:') ,
'#type' => 'select',
'#options' => [
'1' => 'First',
'2' => 'Second',
'3' => 'Third',
],
'#required' => '1',
'#ajax' => [
'method' => 'replace',
'callback' => 'my_form_state_ajax_callback',
],
];
//---------------------
$form['second_form'] = [
'#type' => 'fieldset',
'#title' => "Second form",
];
$form['second_form']['name'] = [
'#type' => 'textfield',
'#required' => TRUE,
'#title' => 'Name.',
];
$form['second_form']['submit'] = [
'#type' => 'submit',
'#value' => "Go",
'#submit' => ['my_form_submit'],
];
}
回调函数:
function my_form_state_ajax_callback($form, &$form_state) {
switch ($form_state['values']['id']) {
case 1:
$form['second_form']['name']['#value'] = 'One';
break;
case 2:
$form['second_form']['name']['#value'] = 'Two';
break;
case 3:
$form['second_form']['name']['#value'] = 'Three';
break;
}
return $form['edit_medal'];
}
基本上,如果我在选择下拉列表中选择First,我想将第二个表单的name 字段更改为One 等。如果我没有在选择下拉列表中选择任何内容,则第二个表单的值不会设置字段。
上面的代码虽然不起作用。我做错了什么?
【问题讨论】:
-
是否可以将两种形式合二为一?只是问问。 (我不希望您尝试的内容会跨表单起作用。)