Why is the AJAX replaced drop-down list value not being submitted? I have an AJAX method for when a value is selected from the source drop-down list the target drop-down gets replaced with new values. The problem is that the new replaced drop-down list selected value is not being submitted (e.g. not in $form_state['values']['target'] = 'not the val I selected'). It looks like the value submitted is from the target drop-down list that is default from when the page first loads.

Any ideas as to why this is happening?  

function dashboard_node_filter_form(){
  ...
  $form['filters']['source'] = array(
      '#type' =&gt; 'select',
      '#options' =&gt; source_options(),
      '#title' =&gt; 'Source',
      '#ajax' =&gt; array(
          'callback' =&gt; 'dashboard_node_filter_target',
          'wrapper' =&gt; 'edit-target',
          'method' =&gt; 'replace',
          'effect' =&gt; 'none',
       ),
  );
  // when source is selected this gets replaced
  $form['filters']['target'] = array(
      '#type' =&gt; 'select',
      '#options' =&gt; get_,
      '#title' =&gt; 'Target',
  );
  $form['filters']['submit'] = array(
     '#type' =&gt; 'submit',
     '#value' =&gt; 'Submit',
  );
}

function dashboard_node_filter_target($form, &amp;$form_state) {
  return $form['filters']['target'] = array(
      '#type' =&gt; 'select',
      '#id' =&gt; 'edit-target',
      '#options' =&gt; display_options($form_state['values']['id']),
  );
}
You should make all form manipulations that are supposed to be actually submitted in dashboard_node_filter_form() and use dashboard_node_filter_target() only to tell ajax what part of a form should be updated, and to make aesthetic-only changes that does not affect data.