Il tipo di domanda select_multiple visualizza un elenco in cui il rispondente può selezionare una o più opzioni. Per impostazione predefinita, le scelte vengono visualizzate come caselle di controllo. Il valore memorizzato è un elenco di tutti i valori di scelta selezionati separati da spazi.

Specifica XLSForm di base

Foglio di lavoro survey:

typenamelabel
select_multiple cropscrops_grownQuali colture coltiva la famiglia?

Foglio di lavoro choices:

list_namenamelabel
cropsmaizeMais
cropsbeansFagioli
cropsriceRiso
cropsvegetablesVerdure
cropsotherAltro

Per ulteriori dettagli vedere la specifica XLSForm.

Formato dei dati esportati

La colonna esportata contiene un elenco di valori selezionati separati da spazi:

  maize beans vegetables
  

Usa la funzione selected() — non = — quando si testano i valori di select_multiple nelle espressioni (vedi sotto).

Utilizzi

Le domande select_multiple vengono usate per:

  1. Raccogliere più risposte applicabili (es. fonti di reddito, colture coltivate, sintomi)
  2. Elementi di accordo in stile casella di controllo (es. “Seleziona tutto ciò che si applica”)
  3. Inventari di lingue o competenze
  4. Qualsiasi domanda in cui più risposte sono simultaneamente valide

Opzioni di appearance

AppearanceDescrizione
(nessuna)Caselle di controllo predefinite, una per riga
minimalWidget multi-selezione a discesa
compactGriglia compatta, le colonne si adattano alla larghezza dello schermo
compact-NGriglia compatta forzata a N colonne
horizontalScelte disposte orizzontalmente in una riga (web)
horizontal-compactOrizzontale, spaziatura compatta (web)
labelMostra solo le etichette, senza caselle di controllo (usa con list-nolabel)
list-nolabelMostra solo le caselle di controllo, senza etichette (usa con label)
columns(N)Visualizza in N colonne (estensione rtSurvey)

Esempio: layout compatto a 3 colonne

typenamelabelappearance
select_multiple symptomssymptomsSeleziona tutti i sintomi osservaticompact-3

Utilizzo di selected() nelle espressioni

Poiché il valore memorizzato è una stringa separata da spazi, devi usare selected() per verificare se una scelta specifica è stata selezionata. L’utilizzo di = non funzionerà correttamente.

In relevant

Mostra una domanda di follow-up solo se è stato selezionato “altro”:

typenamelabelrelevant
select_multiple cropscrops_grownQuali colture vengono coltivate?
textcrops_otherSpecifica altre coltureselected(${crops_grown}, 'other')

In constraint

Richiedi almeno 2 scelte:

typenameconstraintconstraint_message
select_multiple issuesissuescount-selected(.) >= 2Seleziona almeno 2 problemi

Limita a un massimo di 3:

typenameconstraintconstraint_message
select_multiple prioritiesprioritiescount-selected(.) <= 3Seleziona non più di 3 priorità

In calculate — unione delle etichette selezionate

Combina selected-at(), count-selected() e choice-label() per creare un riepilogo leggibile:

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

Opzione “Nessuno dei precedenti” / esclusiva

Un pattern comune è rendere un’opzione mutuamente esclusiva con tutte le altre. Usa un constraint per applicarlo:

typenamelabelconstraintconstraint_message
select_multiple issuesissuesSeleziona tutti i problemi presentinot(selected(., 'none') and count-selected(.) > 1)“Nessuno” non può essere selezionato con altre opzioni

choices:

list_namenamelabel
issueswaterCarenza d’acqua
issuesroadsStrade pessime
issueshealthMancanza di servizi sanitari
issuesnoneNessuno dei precedenti

Conteggio e riepilogo delle selezioni

FunzioneEsempioRisultato
count-selected(field)count-selected(${crops_grown})Numero di scelte selezionate
selected(field, value)selected(${crops_grown}, 'maize')true/false
selected-at(field, index)selected-at(${crops_grown}, 0)Primo valore selezionato
choice-label(field, value)choice-label(${crops_grown}, 'maize')Etichetta per un valore

Best practice

  1. Usa sempre selected() in relevant, constraint e calculate — mai = o !=.
  2. Aggiungi un vincolo per limitare il numero massimo di selezioni se il design della domanda lo richiede.
  3. Includi un’opzione “Nessuno” o “Non applicabile” quando zero selezioni è una risposta valida.
  4. Per gli elenchi lunghi (15+ scelte), usa minimal (menu a discesa multi-selezione) per evitare lo scorrimento eccessivo.
  5. Esporta i dati e usa la suddivisione delle stringhe nel tuo strumento di analisi — il formato separato da spazi richiede la suddivisione prima del pivoting.

Limitazioni

  • I valori select_multiple non possono essere confrontati direttamente con =. Usa sempre selected().
  • L’appearance compact potrebbe non visualizzarsi bene per etichette di scelta molto lunghe.
  • Quando si filtrano le scelte con choice_filter, il filtraggio si applica a tutte le scelte visualizzate, come per select_one.
Questa pagina è stata utile?