Тип вопроса select_multiple отображает список, в котором респондент может выбрать один или несколько вариантов. По умолчанию варианты отображаются в виде флажков. Хранимое значение — это разделённый пробелами список всех выбранных значений вариантов.

Базовая спецификация XLSForm

Лист survey:

typenamelabel
select_multiple cropscrops_grownКакие культуры выращивает домохозяйство?

Лист choices:

list_namenamelabel
cropsmaizeКукуруза
cropsbeansФасоль
cropsriceРис
cropsvegetablesОвощи
cropsotherДругое

Дополнительную информацию см. в спецификации XLSForm.

Формат хранимых данных

Экспортированный столбец содержит разделённый пробелами список выбранных значений:

  maize beans vegetables
  

Используйте функцию selected() — а не = — при проверке значений select_multiple в выражениях (см. ниже).

Применение

Вопросы типа select_multiple используются для:

  1. Сбора нескольких применимых ответов (например, источники дохода, выращиваемые культуры, симптомы)
  2. Элементов согласия с флажками (например, «Выберите всё применимое»)
  3. Перечней языков или навыков
  4. Любого вопроса, где одновременно допустимы несколько ответов

Варианты внешнего вида

Внешний видОписание
(нет)Флажки по умолчанию, по одному в строке
minimalВыпадающий список с множественным выбором
compactКомпактная сетка, количество столбцов адаптируется к ширине экрана
compact-NКомпактная сетка, принудительно N столбцов
horizontalВарианты расположены горизонтально в ряд (веб)
horizontal-compactГоризонтально, компактный отступ (веб)
labelПоказывает только метки, без флажков (используйте с list-nolabel)
list-nolabelПоказывает только флажки, без меток (используйте с label)
columns(N)Отображение в N столбцах (расширение rtSurvey)

Пример: 3-колоночный компактный макет

typenamelabelappearance
select_multiple symptomssymptomsВыберите все наблюдаемые симптомыcompact-3

Использование selected() в выражениях

Поскольку хранимое значение является строкой, разделённой пробелами, для проверки выбора конкретного варианта необходимо использовать selected(). Использование = работать правильно не будет.

В relevant

Показать следующий вопрос только если выбрано “другое”:

typenamelabelrelevant
select_multiple cropscrops_grownКакие культуры выращиваются?
textcrops_otherПожалуйста, укажите другие культурыselected(${crops_grown}, 'other')

В constraint

Требовать выбора не менее 2 вариантов:

typenameconstraintconstraint_message
select_multiple issuesissuescount-selected(.) >= 2Выберите не менее 2 вопросов

Ограничить максимум 3 вариантами:

typenameconstraintconstraint_message
select_multiple prioritiesprioritiescount-selected(.) <= 3Выберите не более 3 приоритетов

Шаблон «Ничего из вышеперечисленного» / эксклюзивный вариант

Распространённый шаблон — сделать один вариант взаимоисключающим с остальными. Используйте constraint для соблюдения этого:

typenamelabelconstraintconstraint_message
select_multiple issuesissuesВыберите все имеющиеся проблемыnot(selected(., 'none') and count-selected(.) > 1)«Нет» нельзя выбирать вместе с другими вариантами

choices:

list_namenamelabel
issueswaterНехватка воды
issuesroadsПлохие дороги
issueshealthОтсутствие медицинских услуг
issuesnoneНичего из вышеперечисленного

Подсчёт и обобщение выборов

ФункцияПримерРезультат
count-selected(field)count-selected(${crops_grown})Количество выбранных вариантов
selected(field, value)selected(${crops_grown}, 'maize')true/false
selected-at(field, index)selected-at(${crops_grown}, 0)Первое выбранное значение
choice-label(field, value)choice-label(${crops_grown}, 'maize')Метка для значения

Лучшие практики

  1. Всегда используйте selected() в relevant, constraint и calculate — никогда = или !=.
  2. Добавляйте ограничение для лимита максимального количества выборов, если дизайн вопроса требует этого.
  3. Включайте вариант «Нет» или «Не применимо», когда ноль выборов является допустимым ответом.
  4. Для длинных списков (15+ вариантов) используйте minimal (выпадающий список) во избежание чрезмерной прокрутки.
  5. Экспортируйте данные и используйте разбиение строк в инструменте анализа — формат с пробелами требует разделения перед сводными таблицами.

Ограничения

  • Значения select_multiple нельзя напрямую сравнивать с помощью =. Всегда используйте selected().
  • Компактный вид может плохо отображаться для очень длинных меток вариантов.
  • При фильтрации вариантов с помощью choice_filter фильтрация применяется ко всем отображаемым вариантам, как и в select_one.
Была ли эта страница полезной?