2017-07-03 89 views
0

我試圖在drupal中動態創建/添加textfields,具體取決於選擇列表的選定選項。在drupal中動態添加字段,具體取決於使用ajax/jquery的選定選項

如果選擇了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閱讀它。

任何人都可以幫助我,並指出我如何實現這一目標的正確方向?提前致謝。

+0

查看以下鏈接https://www.drupal.org/node/752056,也是實例模塊https://www.drupal.org/project/examples – vishwa

回答

0

獲得選擇select_list中的選項:

$selected_name = isset($form_state['values']['select_list]) ? $form_state['values']['select_list'] : NULL; 

設置默認值PERSON_NAME:

'#default_value' => $selected_name, 
相關問題