Applying and testing conditional logic on forms can take a bit of trial and error.
...
Table of Contents | ||
---|---|---|
|
Introduction
Conditional logic is used on forms and decision tools to:
progressively show questions or information
show different questions or information based on previous responses.
Pre-reading
This guide assumes you’re familiar with how to create a Drupal webform.
See our other articles on forms and privacy.
Process
What you need to know
As for all Drupal forms, you need to create the form and embed it in a Landing page in the CMS and . Then you publish or preview that Landing page for testing. (While Although there is a test function in Drupal forms, we prefer it’s more reliable to test on a an SDP front end view.)
Applying and testing conditional logic on forms can take a fair bit of trial and error. You’ll do a lot of refreshing of this your published/preview page while setting up an and testing logic configuration.
When you are in the Build mode on a webform, you can see if conditional logic has been applied to a question or piece of text by looking in the ‘Conditional’ column.
...
Conditional logic settings
When you’re in Edit mode of a form element (a question or piece of text), you’ll see a panel on the right of your screen. Click the ‘Conditions’ tab to apply settings.
...
From the screenshot above:
1 = State: Visible or Hidden
2 = All, Any or One
3 = Options include: Empty / Filled; Checked / Unchecked; Value is /Value is not
In this example, we can see that question 4 is set to be visible if the answer to question 3 is ‘Individual’. You can infer that there’s probably another conditional logic configuration set up on another question if the answer to question 3 is something else.
Numbering: Because you’re showing and hiding information and questions according to answers chosen on previous questions, it doesn’t make sense to number the questions on the final published form or tool. But while building the form or tool, it really helps a lot.
...
Tip: It helps to have 2 browser windows open side by side - building the form in one and testing the preview in the other. Each time you make a change on the form’s logic, you hit refresh on the other screen to see if your change did what you expected or wanted it to do.
What you need to do
Follow this basic process:
Plan your logic first (see below).
Add all your questions and information in your form in the CMS.
Progressively apply conditions and keep testing.
Hidden/visible logic can be applied on text fields, not just on 'questions' (use the Advanced HTML element).
Specific logic is mainly used with radio and checkbox elements (e.g. Q2 is visible if the response to Q1 is 'no').
Info |
---|
Tip: build screen When you are in the Build mode on a webform, you can see if conditional logic has been applied to a question or piece of text by looking in the ‘Conditional’ column. Click Edit to add logic. |
Plan your logic and create your test plan
People often set up a flowchart to map out the logic of a form or tool. I find it It's helpful to transfer this info all the information a document to plan the numbering and the logic.
This document can then be used as a test plan for your tester. You should always get other people to test your form thoroughly before you go live. You can create a share link of the page where you embedded the form for this.
Here’s an example:
Question / Text | Notes | Conditions / email handler | ||
---|---|---|---|---|
1 What is your full name?* | Text field, required | |||
2 What is your email address?* | Email field, required | |||
3 What is your phone number? | Phone number field (10 digits), not required | |||
4 What type of enquiry do you have? 4a Question 4b Complaint | Radios, requiredna | |||
5 What is your enquiry complaint about? | Radios, requiredResponses only for | Visible if Q4 value is 4b | ||
5a Melbourne | ||||
5b Geelong | ||||
5c Phillip Island | ||||
6 The next question (specifically for questions about Melbourne) | Visible if | 5a Apples | If Q5 value is 5a | |
7 The next question (specifically for complaints about Melbourne) | Visible if email apples@vic.gov.au 5b Bananas | |||
8 The next question (specifically for complaints about Geelong) | Visible if | |||
9 What is your enquiry about? | Radios, required | Visible if Q4 value is 4a | ||
Email handlers Question + Melbourne Complaint + Melbourne | If Q4 value is 4a If Q4 value is 4a4b | |||
6 What is your complaint about? | Radios, required | Visible if Q1 value is 1b | 6a Melbourne | If Q1 value is 1b and Q6 value is 6a email melbourne@vic.gov.au | 6b Geelong | 6c Phillip Island |
...
Email handlers Question + Geelong Complaint + Geelong | If Q4 value is 4b If Q4 value is 4b |
How to use conditional logic settings: questions and text
When you’re in Edit mode of a form element (a question or piece of text), you’ll see a panel on the right of your screen. Click the ‘Conditions’ tab to apply settings.
...
From the screenshot above:
1 = State: Visible or Hidden (usually 'visible')
2 = All, Any or One (to add more than 1 element so that ‘all’ or ‘any’ are applicable, click the plus icon next to the element)
3 = Options include: Empty / Filled; Checked / Unchecked; Value is /Value is not
Info |
---|
Numbering: Because you’re showing and hiding information and questions according to answers chosen on previous questions, it doesn’t make sense to number the questions on the final published form or tool. But while planning and testing the logic and building the form or tool, it’s really useful. You can see on the table below how the numbering helps state the logic/conditions. It also helps when configuring logic and you need to select items on a long dropdown. |
Conditional logic settings for email handlers
Refer to Create a Drupal webform - email notifications.
...
The State for email handlers is either Enabled or Disabled. The conditions required that all 3 elements needed to have the set value in order for the handler to take the specified action (i.e. send to the specified email address).
...
Hide the submit button
If you’re building a decision tool and don’t want the user to submit any responses you should hide the submit button.
To remove the default Submit button, click on Edit and tick the Hide submit button checkbox.
...