I am building a form with form API in a custom module. Certain fields should be populated based on the selected value of a dropdown.
User will select the pre-entered profiles, based on which other fields should be populated.
I have used ajax callback on select box, it works fine for the first time. But not working on next time.
function multi_step_user_info_form($form, &$form_state) {
$form['user_data_form']['reference_number_ajax'] = array(
'#type' => 'select',
'#title' => 'Select a Patient',
'#ajax' => array(
'callback' => 'ref_number_dropdown_callback',
'wrapper' => 'ref_number_list',
'event' => 'change',
'method' => 'replace',
'effect' => 'fade',
),
'#attributes' => array('class'=>array('dynamic-select')),
'#default_value' => isset($values['reference_number_ajax']) ? $values['reference_number_ajax'] : NULL,
'#prefix'=>'<div class="col-md-12">',
'#field_suffix'=>'</div>');
$form['user_data_form']['patient_name'] = array('#type' => 'textfield',
'#title' => 'Patient Name','#value' => $patient_name, '#default_value' => isset($values['patient_name']) ? $values['patient_name'] : NULL,
'#prefix'=>'<div id="ref_number_list"><div class="col-md-12">',
'#field_suffix'=>''
); return $form; }
function ref_number_dropdown_callback($form, $form_state) {
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'query')
->propertyCondition('status', NODE_PUBLISHED)
->fieldCondition('field_reference_number', 'value', $form_state['values']['reference_number_ajax'], '=')
->range(0, 1);
$result = $query->execute();
$nid ='';
if (isset($result['node'])) {
$nid = $nid = current($result['node'])->nid;
$node = node_load($nid);
}
// $form_state['rebuild'] = TRUE;
// THESE TWO VALUES SHOULD BE POPULATED ON AJAX CALLBACK //
$form['user_data_form']['patient_name']['#value'] = $node->field_patientname[$node->language][0]['value'];
$form['user_data_form']['age']['#value'] = $node->field_age[$node->language][0]['value'];
$elements = array($form['user_data_form']['patient_name'],$form['user_data_form']['age']);
return $elements;
}