私はたくさんのフィールドを持つ drupal 7 フォームを持っています:
$form['account_type'] = array(
'#title' => t('Utility Account Type'),
'#type' => 'select',
'#options' => necp_enrollment_administration_portal_account_type_options(),
'#required' => TRUE,
'#default_value' => isset($form_state['values']['account_type']) ? $form_state['values']['account_type'] : '',
);
// Should show if account_type = 1
$form['home_wrapper'] = array(
'#type' => 'fieldset',
'#states' => array(
'visible' => array(
':input[name="account_type"]' => array('value' => 1),
),
),
);
$form['home_wrapper']['first_name_1'] = array(
'#title' => t('Primary Account First Name'),
'#type' => 'textfield',
'#default_value' => isset($form_state['values']['first_name_1']) ? $form_state['values']['first_name_1'] : '',
'#states' => array(
'required' => array(
':input[name="account_type"]' => array('value' => 1),
),
),
);
$form['home_wrapper']['last_name_1'] = array(
'#title' => t('Primary Account Last Name'),
'#type' => 'textfield',
'#default_value' => isset($form_state['values']['last_name_1']) ? $form_state['values']['last_name_1'] : '',
'#states' => array(
'required' => array(
':input[name="account_type"]' => array('value' => 1),
),
),
);
// Should show if account_type = 2
$form['business_wrapper'] = array(
'#type' => 'fieldset',
'#states' => array(
'visible' => array(
':input[name="account_type"]' => array('value' => 2),
),
),
);
$form['business_wrapper']['company_name'] = array(
'#title' => t('Company/Organization'),
'#type' => 'textfield',
'#default_value' => isset($form_state['values']['company_name']) ? $form_state['values']['company_name'] : '',
'#states' => array(
'required' => array(
':input[name="account_type"]' => array('value' => 2),
),
),
);
Firefox/Chrome/Opera のすべてのバージョンで、このフォームは正常に動作します。ただし、IE のすべてのバージョンで、フォームは display:none; で初期化されます。account_type の値に関係なく、すべての条件付きフィールドのスタイル。account_type の選択されたオプションを変更しても、非表示のステータスには影響しません。
このフォームのデバッグに関するヒントは素晴らしいでしょう。
ノート:
- 私は Drupal 開発者ではありませんが、このサイトを継承しました。最後のいくつかのバグを解決して、ライブに移行できるようにしています
- 上記以外にもフィールドがあります。フォームのセットアップ方法の要点を理解できるように、該当するフィールドをいくつか示しました。
- 開発中のフォームの現在の URL: https://northeastcleanpower.com/enroll_new
- http://www.browserstack.com/を使用してIE 7 ~ 10pp4 をデバッグしています (ただし、8 以上のみをサポートする必要があると思います)。
私も試しました:
':select[name="account_type"]' => array('value' => 1),
'#edit-account-type' => array('value' => 1),