我正在尝试根据选择列表的选定选项在drupal中动态创建/添加文本字段。
如果选择了 Jack,则创建以“Jack”为内容的文本字段。
到目前为止,我使用 Drupal 的 #ajax 属性所做的事情,我设法创建了文本字段,但无法将选择列表选项作为字段值。
$form['select_list'] = array(
'#type' => 'select',
'#options' => array('jack'=>'Jack', 'ben'=>'Ben'),
'#ajax' => array(
'callback' => 'mymodule_ajax_add',
'wrapper' => 'select_list_fieldset',
'method' => 'replace',
'effect' => 'fade'
)
);
$form['select_list_fieldset'] = array(
'#type' => 'fieldset',
'#prefix' => '<div id="select_list_fieldset">',
'#suffix' => '</div>';
);
$form_state['storage']['num_people'] = isset($form_state['storage']['num_people']) ? $form_state['storage']['num_people'] : 1;
if($form_state['storage']['num_people']){
for( $i = 1; $i < $form_state['storage']['num_people']; $i++){
$form['select_list_fieldset'][$i]['person_name'] = array(
'#title' => 'Name',
'#type' => 'textfield',
'#value' => ???????
);
}
}
$form_state['storage']['num_people']++;
function mymodule_ajax_add($form, &$form_state){
return $form['select_list_fieldset'];
}
我得到了这个工作,但对如何用我想要的填充字段感到沮丧。
我还尝试使用 jQuery 明确地做到这一点。我设法根据选择列表中的选定选项重新创建预先填充了值的字段。
$('#select_list').change(function(){
var name_key = $(this).val();
var name_value = $(this).text();
$('#select_list_fieldset').append('<input type="text" value="'+name_value+'">');
});
通过 jQuery 编写它的问题是,一旦提交表单,所有动态创建的字段都将被忽略。我在stackoverflow的某个地方读到了它。
谁能帮助我并指出如何实现这一目标的正确方向?提前非常感谢。