1

私はfield_applyと呼ばれるProfile2によって作成されたチェックボックスを持っています。次に、hook_form_alterを使用して、チェックボックスがオンになっているときに表示されるはずのtexfieldを追加します。

function test_form_alter(&$form, &$form_state, $form_id) {
  if($form_id == 'user_register_form') {
    $form['profile_test']['test'] = array(
      '#type' => 'textfield',
      '#title' => 'Test text',
      '#states' => array(
        'visible' => array(
          ':input[name="field_apply"]' => array('checked' => TRUE),
        ),
      ),
    );
  }
}

しかし、#statesは機能しません。field_applyがチェックされていなくても、Textfieldは表示されたままです。

4

1 に答える 1

0

私はそれを解決しました:) #stateのフィールドの名前が間違っていました。firebug を使用し、field_apply チェックボックスを選択し、"name" 属性の値をコピーして、':input[name="field_apply"]' の "field_apply" を置き換えます。上の例では、#states 属性は次のようになります。

'visible' => array(':input[name="profile_test[field_apply][und]"]' => array('checked' => TRUE)),
于 2012-08-13T10:44:38.780 に答える