无法在Drupal 7中保留相关选择框的值

时间:2013-08-12 13:58:01

标签: ajax drupal-7

我有两个依赖的下拉列表用于国家/地区,一个用于州。我在多步骤webform中多次使用该概念。 加载表单时,国家/地区列表是可以的。在选择特定国家时,州名单也可以。 问题来了: 如果在webform的同一部分中存在某些必填字段,并且用户未填写该表单,则表单将刷新并丢失整个状态列表。此外,当移动到下一步(多步网页表单)并返回到同一页面时,该值将丢失。 但是,在整个过程中,将保留国家/地区选择列表的值。 不保留使用ajax生成的选择选项。 提前致谢。以下是使用的代码。

$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'];
         }

1 个答案:

答案 0 :(得分:0)

我最初的想法是你应该通过引用传递表单和表单状态($ from,$ form_state)应该是(& $ form,& $ form_state)你的ajax回调(你也有错字) )。