it-swarm.com.de

Formzustände mit den Bedingungen "und" und "oder"

Bei Verwendung der Formular-API in D7 muss ich aus Zuständen verwenden, um eine sichtbare Eingabe mit dieser Bedingung einzurichten:

field1 = value A AND (field2 = value B OR value C OR value D)

So etwas, aber dieses Beispiel läuft nicht:

'#states' => array(
      'visible' => array(
        array(':input[name="question_inhabitant_type"]' => array('value' => 'owner')),
        'AND',
        array(':input[name="question_building_type"]' => array('value' => 'house100')),
        'OR',
        array(':input[name="question_building_type"]' => array('value' => 'house150')),
        'OR',
        array(':input[name="question_building_type"]' => array('value' => 'house200')),
      ),
    ),

Irgendeine Idee?

5
Promo

Sie können or/xor In Formularzuständen verwenden. Für and reicht die Fortsetzung der Bedingungen aus. Zum Beispiel kann Ihr Code die Bedingung wie folgt geschrieben werden:

'#states' => array(
  'visible' => array(
    array(':input[name="question_inhabitant_type"]' => array('value' => 'owner')),
    array(
      array(':input[name="question_building_type"]' => array('value' => 'house100')),
      'or',
      array(':input[name="question_building_type"]' => array('value' => 'house150')),
      'or',
      array(':input[name="question_building_type"]' => array('value' => 'house200')),
    ),
  ),
),

Hinweis : jQuery 1.7 unterstützt keine OR/XORs für #states. Stellen Sie also sicher, dass Sie die neueste jQuery-Version auf Ihrer Site haben (> 1.7).

Leider hat der obige Code nicht wie erwartet funktioniert. Bitte helfen Sie durch Ihre Kommentare, um es zu korrigieren. In der Zwischenzeit können Sie auch diesen Code ausprobieren:

'#states' => array(
  'visible' => array(
    ':input[name="question_inhabitant_type"]' => array('value' => 'owner'),
    ':input[name="question_building_type"]' => array(
      array('value' => 'house100'),
      array('value' => 'house150'),
      array('value' => 'house200'),
    ),
  ),
),
5
Vishal Kumar