En utilisant l'API de formulaire dans D7, je dois utiliser des états pour configurer une entrée visible avec cette condition:
field1 = value A AND (field2 = value B OR value C OR value D)
Quelque chose comme ça, mais cet exemple ne fonctionne pas:
'#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')),
),
),
Une idée?
Vous pouvez utiliser or/xor
dans les états du formulaire. Pour and
, la continuation des conditions suffit. Par exemple votre code la condition peut s'écrire:
'#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')), ), ), ),
Remarque: jQuery 1.7 ne prend pas en charge les OR/XOR pour #states
. Donc, assurez-vous d'avoir la dernière version de jQuery sur votre site (> 1.7).
Malheureusement, le code ci-dessus n'a pas fonctionné comme prévu. Aidez-nous à corriger vos commentaires. En attendant, vous pouvez également essayer ce code:
'#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'),
),
),
),