automatically fill the field info based on user selected
Please make a try by using Entity reference autofill and Entityreference prepopulate Modules.


Add an entity reference field.
The entity reference autofill will automatically fill reference value into field.
Entityreference prepopulate will prepopulate the values. (you have to add existing fields for that.)


For more details please refer project page.

Another approach using ajax. Try the following code in a custom module.

function your_module_form_alter(&amp;$form, &amp;$form_state, $form_id){ 
  if($form_id =='your_node_form_id') {
     $form['your-email-field']['#prefix'] = '&lt;div id="field-email-replace"&gt;';
     $form['your-email-field']['#suffix'] = '&lt;/div&gt;';
}
$form['your-user-field']['und'][0]['#ajax'] = array('callback' =&gt; 'your_module_callback', 'wrapper' =&gt; 'field-email-replace','method' =&gt; 'replace',); 
}

function your_module_callback($form, $form_state){
  $uid = $form_state['values']['your-user-field']['und'][0]['value'];
  $user = user_load($uid);
  $form['your-email-field']['und'][0]['value'] = $user-&gt;email;

  $commands = array();
  $commands[] = ajax_command_replace("#field-email-replace",  render($form['your-email-field'])); // use render if you want to render field.   

 return array('#type' =&gt; 'ajax', '#commands' =&gt; $commands);
}


Hope this will help you.