2013-08-12 5 views
4

У меня есть два зависимых выпадающего списка для страны и один для состояния. Я использую эту концепцию несколько раз в многоэтапной веб-форме. Когда форма загружается, список стран в порядке. При выборе конкретной страны список состояний также в порядке. Теперь возникает вопрос: Если в той же части веб-формы есть какое-то обязательное поле, и пользователь не заполняет это, эта форма обновляется и теряет весь список состояний. Кроме того, при переходе к следующему шагу (многоступенчатая веб-форма) и возвращению на ту же страницу значение теряется. Однако во всем процессе сохраняется значение списка выбора страны. Параметры выбора, сгенерированные с помощью ajax, не сохраняются. Спасибо заранее. Ниже приведен код.Невозможно сохранить значения зависимого блока выбора в Drupal 7

$form['submitted']['employment_history']['employer_1']['address_of_employer']['country']['#ajax'] = array(
     'callback' => 'my_custom_ajax_callback_for_employer_one', 
     'wrapper' => 'edit-submitted-employment-history-employer-1-address-of-employer-state', 
     'method' => 'replace', 
     ); 

    /* 
    * Implements Ajax callback for populating list of provinces (Employer One). 
    */ 

    function my_custom_ajax_callback_for_employer_one($from, $form_state) { 
     $selected_country = $form_state['values']['submitted']['employment_history']['employer_1']['address_of_employer']['country']; 
     $states = location_get_provinces($selected_country); 
     $form['submitted']['employment_history']['employer_1']['address_of_employer']['state']= array(
      '#type' => 'select', 
      '#options' => $states, 
      '#attributes' => array('id' => 'edit-submitted-employment-history-employer-1-address-of-employer-state'), 
      ); 
     $form['rebuild'] = TRUE; 
     return $form['submitted']['employment_history']['employer_1']['address_of_employer']['state']; 
     } 

ответ

0

Моя первая мысль, что вы должны передать форму и форму государства путем ссылки ($ от, $ form_state) должно быть (& $ форма, & $ form_state) на вашем АЯКС обратного вызова (а у вас есть опечатка).

Смежные вопросы