Question:

Fill Date field in a hook form alter with ajax callback

Nora: 2 weeks ago

I'm trying to populate some fields via Ajax.

Is working good with textfields, but no with date field and select list.

After the rebuild of the form the date field is empty and the select too.

Here my code:

function PORTO_SUB_form_alter(&$form, &$form_state, $form_id)
{ if ($form_id == 'datore_node_form')
{
global $user;
  $form['title']['#type'] = 'hidden';
  $form['title']['#value'] = 'test';

  $form['#prefix'] = '<div id="datore_node_form_prefix">';
  $form['#suffix'] = '</div>';

    $form['user_copy'] = array(
      '#type' => 'button',
      '#value' => 'Sono io il datore!',
      '#ajax' => array(
        'event'=>'click',
        'callback' =>'user_copy_ajax_callback',
        'wrapper' => 'datore_node_form_prefix',
    ),
  );
  // field_group_hide_field_groups($form, array('group_azienda'));

  $user = user_load($user->uid);

  dpm($form);

  if (!empty($form_state['values']['field_cognome']))
  {
    unset($form_state['input']['field_cognome']['und'][0]['value']);
    $form['field_cognome']['und'][0]['value']['#value'] = $user->field_cognome['und'][0]['value'];
    $form['field_nome']['und'][0]['value']['#value'] = $user->field_nome['und'][0]['value'];
    $form['field_luogo_di_nascita1']['und'][0]['value']['#value'] = $user->field_luogo_di_nascita1['und'][0]['value'];

    $form['field_data_di_nascita1']['und'][0]['#date_items']['#value'] = $user->field_data_di_nascita1['und'][0]['value'];
    $form['field_data_di_nascita1']['und'][0]['#date_items']['value']['#value'] = $user->field_data_di_nascita1['und'][0]['value'];
    $form['field_data_di_nascita1']['und'][0]['#date_items']['value'] = $user->field_data_di_nascita1['und'][0]['value'];
    $form['field_data_di_nascita1']['und'][0]['#default_value']['#value'] = $user->field_data_di_nascita1['und'][0]['value'];
    $form['field_data_di_nascita1']['und'][0]['#default_value']['value']['#value'] = $user->field_data_di_nascita1['und'][0]['value'];
    $form['field_data_di_nascita1']['und'][0]['#default_value']['value'] = $user->field_data_di_nascita1['und'][0]['value'];
return $form;
}

function user_copy_ajax_callback($form, &$form_state)
{
dpm($form['field_data_di_nascita1']['und'][0]['#default_value']['value']);
return $form;
}

Answer:
Scarlett: 2 weeks ago

Here the solution finally:

https://www.drupal.org/node/1984838#comment-11736060

I had to fill both $form and $form_state values...

$form_state['input']['your_field_to_change']['und'][0]['value'] = $new_date; $form['fyour_field_to_change']['und'][0]['#default_value']['value'] = $new_date;