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; }