Select_one
Питання select_one дозволяють респондентам вибирати рівно один варіант із заздалегідь визначеного списку варіантів.
Тип питання select_one спонукає респондента вибрати рівно один варіант із заздалегідь визначеного списку. За замовчуванням варіанти відображаються як радіокнопки, але доступний широкий діапазон параметрів appearance для зміни макету та поведінки.
Базова специфікація XLSForm
Таблиця survey:
| type | name | label |
|---|---|---|
| select_one yesno | consent | Did the respondent give consent? |
Таблиця choices:
| list_name | name | label |
|---|---|---|
| yesno | yes | Yes |
| yesno | no | No |
listname у select_one listname повинен відповідати стовпцю list_name у таблиці choices.
Для отримання додаткових відомостей дивіться специфікацію XLSForm.
Використання
Питання select_one використовуються для:
- Питань Yes/No
- Вибору однієї відповіді з кількох (наприклад, рівень освіти, стать, сімейний стан)
- Категоріальних рейтингів (наприклад, поганий / задовільний / хороший / відмінний)
- Каскадних (пов’язаних) виборів, де варіанти фільтруються на основі попередньої відповіді
- Вибору країни, регіону, району або іншої адміністративної одиниці
Параметри appearance
Вкажіть значення у стовпці appearance для зміни відображення варіантів:
| Appearance | Опис |
|---|---|
| (none) | Радіокнопки за замовчуванням, по одній на рядок |
minimal | Одиночний випадаючий список замість радіокнопок |
quick | Автоматичний перехід до наступного питання відразу після вибору (лише мобільний) |
compact | Компактна сітка варіантів — кількість стовпців адаптується до ширини екрана |
compact-N | Компактна сітка, примусово N стовпців (наприклад, compact-3) |
quickcompact | Поєднує quick та compact |
quickcompact-N | Поєднує quick та compact з N примусовими стовпцями |
horizontal | Варіанти розташовані в горизонтальний рядок (веб) |
horizontal-compact | Горизонтальне, компактне розташування (веб) |
likert | Рядок шкали Лайкерта — мітки вгорі, радіокнопки внизу |
label | Показує лише мітки варіантів без полів введення (використовується у парі з list-nolabel) |
list-nolabel | Показує лише поля введення без міток (використовується у парі з label) |
columns(N) | Відображення в N стовпцях (розширення rtSurvey, наприклад, columns(3)) |
distress | Віджет емоційних піктограм Психологічного дистресу Кесслера (K10) |
search-api(...) | Динамічний пошук — завантажує варіанти з API під час виконання |
Приклад: Шкала Лайкерта
| type | name | label | appearance |
|---|---|---|---|
| select_one satisfaction | service_rating | How satisfied are you with the service? | likert |
Приклад: Компактно 3 стовпці
| type | name | label | appearance |
|---|---|---|---|
| select_one regions | region | Select region | compact-3 |
Каскадні вибори
Каскадний (пов’язаний) вибір фільтрує варіанти на основі значення, обраного в попередньому питанні. Використовуйте стовпець choice_filter з назвою стовпця з таблиці choices.
Таблиця survey:
| type | name | label | choice_filter |
|---|---|---|---|
| select_one province | province | Select province | |
| select_one district | district | Select district | province_name = ${province} |
Таблиця choices:
| list_name | name | label | province_name |
|---|---|---|---|
| province | nairobi | Nairobi | |
| province | mombasa | Mombasa | |
| district | westlands | Westlands | nairobi |
| district | kasarani | Kasarani | nairobi |
| district | nyali | Nyali | mombasa |
| district | likoni | Likoni | mombasa |
Коли респондент обирає nairobi, у списку районів з’являються лише Westlands та Kasarani.
Назва стовпця, що використовується в choice_filter (наприклад, province_name), повинна існувати в таблиці choices. ${province} посилається на поле survey з назвою province.
Використання обраного значення у виразах
Посилайтеся на обране значення (не мітку) за допомогою ${fieldname}:
relevant: ${consent} = 'yes'
Щоб отримати мітку варіанту замість значення, використовуйте choice-label():
calculate: choice-label(${education_level}, ${education_level})
Варіант “Інше” з вільним текстом
Поширений шаблон — включити варіант “інше”, що відкриває текстове поле:
| type | name | label | relevant |
|---|---|---|---|
| select_one occupation | job | What is your occupation? | |
| text | job_other | Please specify | ${job} = 'other' |
Таблиця choices:
| list_name | name | label |
|---|---|---|
| occupation | farmer | Farmer |
| occupation | trader | Trader |
| occupation | student | Student |
| occupation | other | Other (please specify) |
Найкращі практики
- Тримайте списки короткими та взаємовиключними — якщо респонденти можуть хотіти більше одного, використовуйте
select_multiple. - Розміщуйте найпоширеніший варіант першим або впорядковуйте алфавітно для довгих списків.
- Завжди включайте варіант “Не знаю” або “Відмовляюся відповідати”, де це доречно.
- Використовуйте
minimal(випадаючий список) для списків з більше ніж 7–8 варіантами на мобільному для економії місця на екрані. - Для каскадних виборів додайте всі стовпці фільтрів у таблиці choices перед побудовою форми.
Обмеження
- Респондент може вибрати лише один варіант — використовуйте
select_multipleдля питань з кількома відповідями. - Appearance
likertнайкраще працює з 5–7 варіантами, що вміщуються на одному рядку. - Автоматичний перехід
quickє лише для мобільного; він не має ефекту у веб-формах.