Limiting Responses with Validation Criteria

Last updated: 6 Jun 2022

This feature allows you to avoid accidental or invalid answers, especially in numeric questions (integer or decimal response types). However, validation can be used on any question. Validation criteria are also sometimes referred to as constraints.

For example, if you want to restrict a question about age to numbers between 0 and 130.

Add validation criteria in Formbuilder

To add validation criteria for a specific question, go to Settings, then Validation Criteria.

image

You can directly add a condition or manually enter validation logic in XLSFrom code. The type of restrictions under “Add a condition” corresponds to the type of the questions (123 - numbers, text, date) selected. As seen from the example above, the question type is number and the validation criteria restricts the response to be greater than 3 and less than or equal to 30. The Error Message (optional) is the message your interviewer sees when they enter an invalid response.

Add validation criteria in XLSForm

Validation criteria in XLSForm needs to be entered in specific syntax.

Example Validation Criteria

Criteria

Description

. > 17

Response must be greater than 17

. >= 18

Response must be greater than or equal to 18

. > 17 and . < 130

Response must be between 17 and 130

In the validation criteria syntax,. refers to the current question. ${some_question} refers to the fixed name of a question, which needs to be set in the Question Options and then surrounded by ${}. See below example:

survey

type

name

label

constraint

constraint_message

integer

Q1

Please enter your work ID

. > 0 and . < 100

ID cannot be 0 and must be less than 100

integer

Q2

Total number of workers

integer

Q3

Total number of male workers

. <= ${Q2}

Total number of male workers should not exceed the total number of workers!

integer

Q4

Total number of female workers

. <= ${Q2}

Total number of female workers should not exceed the total number of workers!

survey

Examples of More Advanced Validation Criteria

Criteria

Description

(. >= 18 and . < 130) or (. = 999)

Response must be between 17 and 130 or be equal to 999. (The code 999 is often used for non-responses.)

not(${in_university} = 'yes' and . < 16)

When answering ‘yes’ to the question in_university, the current response must be greater than 16.

not(selected(., 'none') and (selected(., 'chair') or selected(., 'table')))

Response ‘none’ can’t be combined with the two other options of this select_multiple question

There are many other combinations possible, including advanced mathematical calculations. See here for more details.