Repeating Item Conditionals

In the previous section, you learned about how to set up basic Repeating Questions to ask for a list of the same item (e.g., ask for all children or all assets of a client).  Below, you learn how to set up your text conditional on the number of repeating questions, like so:

Conditional Text Based on a Repeating Question

The standard syntax will be:

  • {% if ItemName.number() == 0 %}There are none of the item.{% endif %}
  • {% if ItemName.number() > 1 %}There's more than one item{% endif %}
Example if item is children:

{% if children.number() == 1 %}There is one child.{% else %}There is more than one child or no children.{% endif %}

{% if children.number() > 5 %}There are more than 5 children{% endif %}

Conditional Statements Within a List of Repeating Items

{% for item in ItemName %} Some text here. {% if item.ItemAttribute == 'MultipleChoice' %} Some other text. {% endif %}{% endfor %}

Example: Show text if a child is female{% for item in Children %}The child's name is {{ item.childname }}.{% if item.childgender == 'Female' %}She's a female.{% endif %}{% endfor %}

Example: Show text if the mailing address is not blank{% for item in Address %}{% if item.mailingaddress != '' %}{{ item.mailingaddress }}{% endif %}{% endfor %}

Option with commalist function:{{ commalist(ItemName, ""[[ if item.ItemAttribute2 == 'Value' ]]Something else here[[ endif ]]"") }}

Selecting Only Repeating Items with a Particular Attribute

Use Case: Create a list of items selected from the repeating question based on a particular attribute.  For example, to list all children who are female.  Here's how:

{% for item in ItemName if item.ItemAttribute == 'MultipleChoice' %} {{ item.AnotherItemAttribute }} {% endfor %}

Example:

For example, if you have a Repeating Question for Children but you want to make a list of the Female children separately.  Here's how you can do (assuming you used the attribute variable name Gender in your interview).

{% for item in Children if item.Gender == 'Female' %} {{ item.FullName }}, {% endfor %}

ADVANCED: Repeating Item to Calculate Whether More Than One of the Items Have a Certain Attribute

Testing for One Attribute

Use Case: You want to show a certain phrase if more than one item in the list has a certain attribute.  For example, the repeating item is ""children"", there is a question about ""gender"", and you want to determine if more than one child in the list is a female. Here's how:

{% if ItemName|selectattr(""ItemAttribute"", ""equalto"", ""Choice"")|list|length > 1 %}Conditional text if more than one Item has ItemAttribute of ""Choice."" {% endif %}

Testing for More than One AttributeHave two conditions you want to test for?

{% if ItemName|selectattr(""ItemAttribute"", ""in"", [""Choice1"", ""Choice2""])|list|length > 1 %}

Example:

{% if children|selectattr(""childgender"", ""equalto"", ""Female"")|list|length >= 2 %}Two or more kids are female.{% endif %}

More Special Syntax

The possibilities are endless, and there is much more you can do:

  • Special filters with examples see here.
  • List of ""tests"" that can be used with selectattr, including ""equalto"" see here."