Select_multiple
Οι ερωτήσεις select_multiple επιτρέπουν στους ερωτώμενους να επιλέξουν μία ή περισσότερες επιλογές από προκαθορισμένη λίστα.
Ο τύπος ερώτησης select_multiple εμφανίζει λίστα όπου ο ερωτώμενος μπορεί να επιλέξει μία ή περισσότερες επιλογές. Από προεπιλογή οι επιλογές αποδίδονται ως πλαίσια ελέγχου. Η αποθηκευμένη τιμή είναι μια λίστα διαχωρισμένη με κενά όλων των επιλεγμένων τιμών επιλογής.
Βασική προδιαγραφή XLSForm
Φύλλο εργασίας survey:
| type | name | label |
|---|---|---|
| select_multiple crops | crops_grown | Ποιες καλλιέργειες κάνει το νοικοκυριό; |
Φύλλο εργασίας choices:
| list_name | name | label |
|---|---|---|
| crops | maize | Καλαμπόκι |
| crops | beans | Φασόλια |
| crops | rice | Ρύζι |
| crops | vegetables | Λαχανικά |
| crops | other | Άλλο |
Για περισσότερες λεπτομέρειες, δείτε την προδιαγραφή XLSForm.
Μορφή αποθηκευμένων δεδομένων
Η εξαγόμενη στήλη περιέχει λίστα επιλεγμένων τιμών διαχωρισμένων με κενά:
maize beans vegetables
Χρησιμοποιήστε τη συνάρτηση selected() — όχι = — κατά τον έλεγχο τιμών select_multiple σε εκφράσεις (δείτε παρακάτω).
Χρήσεις
Οι ερωτήσεις select_multiple χρησιμοποιούνται για:
- Συλλογή πολλαπλών εφαρμόσιμων απαντήσεων (π.χ. πηγές εισοδήματος, καλλιέργειες, συμπτώματα)
- Στοιχεία συμφωνίας τύπου πλαισίου ελέγχου (π.χ. “Επιλέξτε όλα όσα ισχύουν”)
- Αποθέματα γλωσσών ή δεξιοτήτων
- Οποιαδήποτε ερώτηση όπου πολλές απαντήσεις ισχύουν ταυτόχρονα
Επιλογές εμφάνισης
| Εμφάνιση | Περιγραφή |
|---|---|
| (καμία) | Προεπιλεγμένα πλαίσια ελέγχου, ένα ανά γραμμή |
minimal | Widget πολλαπλής επιλογής αναπτυσσόμενου μενού |
compact | Συμπαγές πλέγμα, στήλες προσαρμόζονται στο πλάτος οθόνης |
compact-N | Συμπαγές πλέγμα με N στήλες |
horizontal | Επιλογές σε οριζόντια γραμμή (web) |
horizontal-compact | Οριζόντιο, συμπαγές διάστιχο (web) |
label | Εμφανίζει μόνο ετικέτες, χωρίς πλαίσια ελέγχου (χρήση με list-nolabel) |
list-nolabel | Εμφανίζει μόνο πλαίσια ελέγχου, χωρίς ετικέτες (χρήση με label) |
columns(N) | Εμφάνιση σε N στήλες (επέκταση rtSurvey) |
Παράδειγμα: Διάταξη 3 συμπαγών στηλών
| type | name | label | appearance |
|---|---|---|---|
| select_multiple symptoms | symptoms | Επιλέξτε όλα τα παρατηρηθέντα συμπτώματα | compact-3 |
Χρήση selected() σε εκφράσεις
Επειδή η αποθηκευμένη τιμή είναι συμβολοσειρά διαχωρισμένη με κενά, πρέπει να χρησιμοποιείτε selected() για να ελέγξετε εάν επιλέχθηκε συγκεκριμένη επιλογή. Η χρήση = δεν θα λειτουργεί σωστά.
Στο relevant
Εμφάνιση ερώτησης παρακολούθησης μόνο εάν επιλέχθηκε το “άλλο”:
| type | name | label | relevant |
|---|---|---|---|
| select_multiple crops | crops_grown | Ποιες καλλιέργειες γίνονται; | |
| text | crops_other | Παρακαλώ διευκρινίστε άλλες καλλιέργειες | selected(${crops_grown}, 'other') |
Στο constraint
Απαίτηση τουλάχιστον 2 επιλογών:
| type | name | constraint | constraint_message |
|---|---|---|---|
| select_multiple issues | issues | count-selected(.) >= 2 | Επιλέξτε τουλάχιστον 2 ζητήματα |
Περιορισμός σε μέγιστο 3:
| type | name | constraint | constraint_message |
|---|---|---|---|
| select_multiple priorities | priorities | count-selected(.) <= 3 | Επιλέξτε το πολύ 3 προτεραιότητες |
Στο calculate — σύνδεση επιλεγμένων ετικετών
Συνδυάστε selected-at(), count-selected() και choice-label() για δημιουργία αναγνώσιμης περίληψης:
| type | name | calculation |
|---|---|---|
| calculate | crops_summary | join(’, ‘, ${crops_grown}) |
Επιλογή “Κανένα από τα παραπάνω” / αποκλειστική επιλογή
Ένα συνηθισμένο πρότυπο είναι να γίνεται μία επιλογή αμοιβαίως αποκλειόμενη με όλες τις άλλες. Χρησιμοποιήστε constraint για επιβολή:
| type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| select_multiple issues | issues | Επιλέξτε όλα τα παρόντα ζητήματα | not(selected(., 'none') and count-selected(.) > 1) | Το “Κανένα” δεν μπορεί να επιλεγεί μαζί με άλλες επιλογές |
choices:
| list_name | name | label |
|---|---|---|
| issues | water | Έλλειψη νερού |
| issues | roads | Κακοί δρόμοι |
| issues | health | Έλλειψη υπηρεσιών υγείας |
| issues | none | Κανένα από τα παραπάνω |
Μέτρηση και σύνοψη επιλογών
| Συνάρτηση | Παράδειγμα | Αποτέλεσμα |
|---|---|---|
count-selected(field) | count-selected(${crops_grown}) | Αριθμός επιλεγμένων επιλογών |
selected(field, value) | selected(${crops_grown}, 'maize') | αληθής/ψευδής |
selected-at(field, index) | selected-at(${crops_grown}, 0) | Πρώτη επιλεγμένη τιμή |
choice-label(field, value) | choice-label(${crops_grown}, 'maize') | Ετικέτα για μια τιμή |
Βέλτιστες πρακτικές
- Πάντα χρησιμοποιείτε
selected()σταrelevant,constraintκαιcalculate— ποτέ=ή!=. - Προσθέστε περιορισμό για περιορισμό του μέγιστου αριθμού επιλογών εάν το απαιτεί ο σχεδιασμός.
- Συμπεριλάβετε επιλογή “Κανένα” ή “Δεν εφαρμόζεται” όταν το μηδέν επιλογών είναι έγκυρη απάντηση.
- Για μεγάλες λίστες (15+ επιλογές), χρησιμοποιήστε
minimal(αναπτυσσόμενο πολλαπλής επιλογής) για αποφυγή υπερβολικής κύλισης. - Εξάγετε δεδομένα και χρησιμοποιήστε διαχωρισμό συμβολοσειράς στο εργαλείο ανάλυσής σας — η μορφή με κενά απαιτεί διαχωρισμό πριν τη συγκεντρωτική ανάλυση.
Περιορισμοί
- Οι τιμές select_multiple δεν μπορούν να συγκριθούν απευθείας με
=. Πάντα χρησιμοποιείτεselected(). - Η συμπαγής εμφάνιση μπορεί να μην αποδίδεται καλά για πολύ μεγάλες ετικέτες επιλογών.
- Κατά το φιλτράρισμα επιλογών με
choice_filter, το φιλτράρισμα εφαρμόζεται σε όλες τις εμφανιζόμενες επιλογές, ίδια όπως στοselect_one.