Typ pytania select_multiple wyświetla listę, z której respondent może wybrać jedną lub więcej opcji. Domyślnie opcje są wyświetlane jako pola wyboru. Przechowywana wartość to lista wybranych wartości opcji oddzielona spacjami.

Podstawowa specyfikacja XLSForm

Arkusz survey:

typenamelabel
select_multiple cropscrops_grownJakie uprawy prowadzi gospodarstwo?

Arkusz choices:

list_namenamelabel
cropsmaizeKukurydza
cropsbeansFasola
cropsriceRyż
cropsvegetablesWarzywa
cropsotherInne

Więcej szczegółów znajdziesz w specyfikacji XLSForm.

Format przechowywanych danych

Wyeksportowana kolumna zawiera listę wybranych wartości oddzielonych spacją:

  maize beans vegetables
  

Przy testowaniu wartości select_multiple w wyrażeniach należy używać funkcji selected() — a nie = (patrz poniżej).

Zastosowania

Pytania select_multiple są używane do:

  1. Zbierania wielu pasujących odpowiedzi (np. źródła dochodu, uprawy, objawy)
  2. Pytań wielokrotnego wyboru (np. „Zaznacz wszystkie, które dotyczą")
  3. Inwentaryzacji języków lub umiejętności
  4. Każdego pytania, gdzie jednocześnie poprawnych może być wiele odpowiedzi

Opcje wyglądu

WyglądOpis
(brak)Domyślne pola wyboru, jedno w wierszu
minimalWidget wielokrotnego wyboru z listą rozwijaną
compactZwarta siatka, kolumny dostosowują się do szerokości ekranu
compact-NZwarta siatka z wymuszeniem N kolumn
horizontalOpcje ułożone poziomo w rzędzie (web)
horizontal-compactPoziome, zwarte odstępy (web)
labelPokazuje tylko etykiety, bez pól wyboru (użyj z list-nolabel)
list-nolabelPokazuje tylko pola wyboru, bez etykiet (użyj z label)
columns(N)Wyświetlanie w N kolumnach (rozszerzenie rtSurvey)

Przykład: Zwarte 3 kolumny

typenamelabelappearance
select_multiple symptomssymptomsZaznacz wszystkie zaobserwowane objawycompact-3

Używanie selected() w wyrażeniach

Ponieważ przechowywana wartość jest ciągiem oddzielonym spacją, musisz używać selected(), aby sprawdzić, czy konkretna opcja została wybrana. Użycie = nie zadziała poprawnie.

W relevant

Pokaż pytanie uzupełniające tylko wtedy, gdy wybrano „inne":

typenamelabelrelevant
select_multiple cropscrops_grownJakie uprawy są prowadzone?
textcrops_otherProszę podać inne uprawyselected(${crops_grown}, 'other')

W constraint

Wymagaj co najmniej 2 opcji:

typenameconstraintconstraint_message
select_multiple issuesissuescount-selected(.) >= 2Wybierz co najmniej 2 problemy

Ogranicz do maksymalnie 3:

typenameconstraintconstraint_message
select_multiple prioritiesprioritiescount-selected(.) <= 3Wybierz nie więcej niż 3 priorytety

W calculate — łączenie wybranych etykiet

Połącz selected-at(), count-selected() i choice-label(), aby zbudować czytelne podsumowanie:

typenamecalculation
calculatecrops_summaryjoin(’, ‘, ${crops_grown})

Opcja „żadna z powyższych" / opcja wykluczająca

Powszechnym wzorcem jest uczynienie jednej opcji wzajemnie wykluczającą z pozostałymi. Użyj constraint, aby to wymusić:

typenamelabelconstraintconstraint_message
select_multiple issuesissuesZaznacz wszystkie obecne problemynot(selected(., 'none') and count-selected(.) > 1)„Żadne" nie może być wybrane razem z innymi opcjami

choices:

list_namenamelabel
issueswaterBrak wody
issuesroadsZłe drogi
issueshealthBrak usług zdrowotnych
issuesnoneŻadne z powyższych

Zliczanie i podsumowywanie wyborów

FunkcjaPrzykładWynik
count-selected(field)count-selected(${crops_grown})Liczba wybranych opcji
selected(field, value)selected(${crops_grown}, 'maize')prawda/fałsz
selected-at(field, index)selected-at(${crops_grown}, 0)Pierwsza wybrana wartość
choice-label(field, value)choice-label(${crops_grown}, 'maize')Etykieta dla wartości

Najlepsze praktyki

  1. Zawsze używaj selected() w relevant, constraint i calculate — nigdy = ani !=.
  2. Dodaj constraint ograniczający maksymalną liczbę wyborów, jeśli projekt pytania tego wymaga.
  3. Uwzględnij opcję „Żadne" lub „Nie dotyczy", gdy zero wyborów jest poprawną odpowiedzią.
  4. W przypadku długich list (15+ opcji) użyj minimal (wielokrotne wybieranie z listy), aby uniknąć nadmiernego przewijania.
  5. Eksportuj dane i używaj podziału ciągów w narzędziu analitycznym — format z separatorem spacji wymaga podziału przed przestawieniem.

Ograniczenia

  • Wartości select_multiple nie można bezpośrednio porównywać za pomocą =. Zawsze używaj selected().
  • Wygląd compact może nie renderować się poprawnie dla bardzo długich etykiet opcji.
  • Przy filtrowaniu opcji za pomocą choice_filter filtrowanie dotyczy wszystkich wyświetlanych opcji, tak samo jak w select_one.
Czy ta strona była pomocna?