Field type: select_multiple
In the form designer, click + Add visible field, then choose select_multiple as the field type. You will be able to choose the choice list and edit choices as part of adding or editing the field.
select_multiple listname: prompts the user to select one or more choices from a list of choices. When working with a spreadsheet form definition, "listname" must correspond to a value that appears in the choices worksheet's list_name column (e.g., "jobtypes").
By default, choices will display as a series of checkboxes, each representing a single static choice from the list of choices you have specified in your form definition. However, there are a range of appearance options available to vary the appearance, functionality, and even choice list. See the sub-sections just below for those options.
When you export your data, each row will include a column with a space-separated list of all chosen response values for each select_multiple field. By default, a series of 1/0 columns for each possible answer value (i.e., a series of "dummy variables") will also be added, but this can be disabled to speed exports by disabling the Export select_multiple responses as a series of 1/0 columns setting in SurveyCTO Desktop. See Understanding the format of exported data for more on the format of exported data.
When you want to use a select_multiple field in field validation or skip patterns (i.e., in constraint or relevance expressions), you will need to use the selected() function to query whether a given choice has been selected. (See the help topics on constraint and relevance expressions to learn more.)
In the spreadsheet form definition:
type | name | label | appearance |
select_multiple listname | fieldname | question text |
Basic appearance options
Specify "minimal" in the appearance column to use a single pop-up selector rather than a series of checkboxes, or specify "compact" to show a compact table of options. If you specify "compact", the number of columns will depend on the width of the display; to force a particular number of columns, specify the number of columns after a hyphen (as in "compact-3" for 3 columns).
In the spreadsheet form definition:
type | name | label | appearance |
select_multiple listname | fieldname | question text | minimal |
select_multiple listname | fieldname | question text | compact |
select_multiple listname | fieldname | question text | compact-# |
Randomizing choice order
If you would like SurveyCTO to randomize the order of choices each time the form is filled out, specify "randomized" in the appearance column (can be combined with another appearance by adding a space between it and the other appearance).
To exclude the top x choices and bottom y choices from the randomization, specify something like "randomized(x, y)". The most common need is to exclude just one choice at the bottom of the list ("randomized(0, 1)"), in order to keep an "Other (specify)" kind of option fixed at the bottom of the list (while randomizing the order for all of the other choices).
In order to look for choice-order effects or audit the randomization, you can have SurveyCTO record the exact choices – and order – shown to each user, as part of the form's meta-data. To enable this recording for your form, add a text audit field with "choices" in its appearance column.
The algorithm used to randomize is the Fisher–Yates inside-out shuffle. To specify a specific randomization seed for testing or reproduction, use an appearance like "randomized(329)" to use a fixed seed of 329 or "randomized(${hhid})" to use the "hhid" field as the seed. If you are also specifying choices to exclude from the randomization, use something like "randomized(329, 0, 1)" to use a seed of 329, exclude 0 choices at the top of the list, and exclude one choice at the bottom of the list.
In the spreadsheet form definition:
type | name | label | appearance |
select_multiple listname | fieldname | question text | randomized |
select_multiple listname | fieldname | question text | randomized(#, #) |
select_multiple listname | fieldname | question text | randomized(#, #, #) |
Dynamic filtering and choice lists
If you would like to dynamically filter the list of choices shown to users, see the Dynamically filtering lists of multiple-choice options help topic.
If you would like to dynamically load the list of choices from a dataset or .csv file, see the Loading multiple-choice options from pre-loaded data help topic.