Select_multiple
Otázky typu select_multiple umožňujú respondentom vybrať jednu alebo viacero možností z preddefinovaného zoznamu.
Typ otázky select_multiple zobrazuje zoznam, kde respondent môže vybrať jednu alebo viacero možností. Predvolene sa voľby renderujú ako zaškrtávacie políčka. Uložená hodnota je zoznam oddelený medzerami zo všetkých vybraných hodnôt volieb.
Základná špecifikácia XLSForm
Hárok survey:
| type | name | label |
|---|---|---|
| select_multiple crops | crops_grown | Aké plodiny pestuje domácnosť? |
Hárok choices:
| list_name | name | label |
|---|---|---|
| crops | maize | Kukurica |
| crops | beans | Fazuľa |
| crops | rice | Ryža |
| crops | vegetables | Zelenina |
| crops | other | Iné |
Pre viac podrobností pozrite si špecifikáciu XLSForm.
Formát uložených dát
Exportovaný stĺpec obsahuje zoznam vybraných hodnôt oddelených medzerami:
maize beans vegetables
Pri testovaní hodnôt select_multiple vo výrazoch používajte funkciu selected() — nie = (pozri nižšie).
Použitia
Otázky select_multiple sa používajú pre:
- Zber viacerých platných odpovedí (napr. zdroje príjmu, pestované plodiny, príznaky)
- Položky so zaškrtávacím políčkom (napr. „Vyberte všetky, ktoré platia")
- Inventáre jazykov alebo zručností
- Akúkoľvek otázku, kde je súčasne platných viac odpovedí
Možnosti vzhľadu
| Vzhľad | Popis |
|---|---|
| (žiadny) | Predvolené zaškrtávacie políčka, jedno na riadok |
minimal | Widget viacnásobného výberu z rozbaľovacieho zoznamu |
compact | Kompaktná mriežka, stĺpce sa prispôsobujú šírke obrazovky |
compact-N | Kompaktná mriežka nútená do N stĺpcov |
horizontal | Voľby usporiadané horizontálne v rade (web) |
horizontal-compact | Horizontálne, kompaktné rozostupy (web) |
label | Zobrazuje iba popisky, žiadne zaškrtávacie políčka (použite s list-nolabel) |
list-nolabel | Zobrazuje iba zaškrtávacie políčka, žiadne popisky (použite s label) |
columns(N) | Zobrazenie v N stĺpcoch (rozšírenie rtSurvey) |
Príklad: Kompaktné rozloženie s 3 stĺpcami
| type | name | label | appearance |
|---|---|---|---|
| select_multiple symptoms | symptoms | Vyberte všetky pozorované príznaky | compact-3 |
Použitie selected() vo výrazoch
Keďže uložená hodnota je reťazec oddelený medzerami, musíte použiť selected() na testovanie, či bola konkrétna voľba vybraná. Použitie = nebude fungovať správne.
V relevant
Zobrazenie následnej otázky iba ak bolo vybrané „iné":
| type | name | label | relevant |
|---|---|---|---|
| select_multiple crops | crops_grown | Aké plodiny sa pestujú? | |
| text | crops_other | Prosím uveďte iné plodiny | selected(${crops_grown}, 'other') |
V constraint
Vyžadovanie aspoň 2 volieb:
| type | name | constraint | constraint_message |
|---|---|---|---|
| select_multiple issues | issues | count-selected(.) >= 2 | Vyberte aspoň 2 problémy |
Obmedzenie na maximum 3:
| type | name | constraint | constraint_message |
|---|---|---|---|
| select_multiple priorities | priorities | count-selected(.) <= 3 | Vyberte najviac 3 priority |
V calculate — spájanie vybraných popiskov
Kombinujte selected-at(), count-selected() a choice-label() na zostavenie čitateľného súhrnu:
| type | name | calculation |
|---|---|---|
| calculate | crops_summary | join(’, ‘, ${crops_grown}) |
Možnosť „Žiadne z vyššie uvedených" / exkluzívna možnosť
Bežným vzorom je urobiť jednu možnosť vzájomne exkluzívnou so všetkými ostatnými. Použite constraint na jej vynútenie:
| type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| select_multiple issues | issues | Vyberte všetky prítomné problémy | not(selected(., 'none') and count-selected(.) > 1) | „Žiadne" nie je možné vybrať spolu s inými možnosťami |
choices:
| list_name | name | label |
|---|---|---|
| issues | water | Nedostatok vody |
| issues | roads | Zlé cesty |
| issues | health | Nedostatok zdravotných služieb |
| issues | none | Žiadne z vyššie uvedených |
Počítanie a sumarizovanie výberov
| Funkcia | Príklad | Výsledok |
|---|---|---|
count-selected(field) | count-selected(${crops_grown}) | Počet vybraných volieb |
selected(field, value) | selected(${crops_grown}, 'maize') | true/false |
selected-at(field, index) | selected-at(${crops_grown}, 0) | Prvá vybraná hodnota |
choice-label(field, value) | choice-label(${crops_grown}, 'maize') | Popisok pre hodnotu |
Najlepšie postupy
- Vždy používajte
selected()vrelevant,constraintacalculate— nikdy=alebo!=. - Pridajte obmedzenie na obmedzenie maximálneho počtu výberov, ak to dizajn otázky vyžaduje.
- Zahrňte možnosť „Žiadne" alebo „Nie je použiteľné", keď je platnou odpoveďou nula výberov.
- Pre dlhé zoznamy (15+ volieb) použite
minimal(rozbaľovací zoznam s viacnásobným výberom), aby ste sa vyhli nadmernému rolovaniu. - Exportujte dáta a pri analýze použite rozdelenie reťazca — formát oddelený medzerami vyžaduje rozdelenie pred otočením.
Obmedzenia
- Hodnoty select_multiple nemôžu byť priamo porovnávané pomocou
=. Vždy používajteselected(). - Kompaktný vzhľad sa nemusí dobre renderovať pri veľmi dlhých popisoch volieb.
- Pri filtrovaní volieb pomocou
choice_filtersa filtrovanie vzťahuje na všetky zobrazené voľby, rovnako ako priselect_one.