4

国用と州用の 2 つの依存ドロップダウンがあります。マルチステップの Web フォームでこの概念を複数回使用しています。フォームが読み込まれると、国のリストは問題ありません。特定の国を選択すると、州のリストも問題ありません。ここで問題が発生します。Webフォームの同じ部分に必須フィールドがあり、ユーザーがそれを入力しないと、フォームが更新され、州のリスト全体が失われます。また、次のステップ (マルチステップ Web フォーム) に移動して同じページに戻ると、値は失われます。ただし、プロセス全体で、国選択リストの値は保持されます。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'];
         }
4

1 に答える 1

0

私の最初の考えは、フォームとフォームの状態を参照で渡す必要があるということです ($from, $form_state) は、ajax コールバックで (&$form, &$form_state) にする必要があります (タイプミスもあります)。

于 2014-07-07T15:53:25.047 に答える