{ "version": 1, "title": "Tutorial — Conditionals (Basic)", "fields": [ { "id": "intro", "type": "note", "label": "The 'relevant' property on any field controls whether it is shown or hidden. The expression compares a field ID to a value using = or !=. When a field is hidden, its value is excluded from the submission." }, { "id": "divider_1", "type": "divider" }, { "id": "example_1_note", "type": "note", "label": "Example 1: Show a follow-up field only when a specific option is selected." }, { "id": "has_children", "type": "select_one", "label": "Does the household have children under 18?", "required": true, "options": [ {"value": "yes", "label": "Yes"}, {"value": "no", "label": "No"} ] }, { "id": "num_children", "type": "number", "label": "How many children?", "relevant": "has_children = 'yes'" }, { "id": "youngest_child_age", "type": "number", "label": "Age of youngest child", "relevant": "has_children = 'yes'" }, { "id": "divider_2", "type": "divider" }, { "id": "example_2_note", "type": "note", "label": "Example 2: Show a field when an option is NOT selected (using !=)." }, { "id": "interview_result", "type": "select_one", "label": "Interview result", "required": true, "options": [ {"value": "completed", "label": "Completed"}, {"value": "refused", "label": "Refused"}, {"value": "absent", "label": "Respondent absent"} ] }, { "id": "refusal_reason", "type": "select_one", "label": "Reason for refusal", "relevant": "interview_result = 'refused'", "options": [ {"value": "no_time", "label": "No time"}, {"value": "distrust", "label": "Distrust / privacy concern"}, {"value": "language", "label": "Language barrier"}, {"value": "other", "label": "Other"} ] }, { "id": "callback_date", "type": "date", "label": "Callback date", "relevant": "interview_result = 'absent'", "hint": "Schedule a return visit" }, { "id": "notes", "type": "textarea", "label": "Notes", "relevant": "interview_result != 'completed'" } ] }