Loại câu hỏi select_multiple hiển thị danh sách cho phép người trả lời chọn một hoặc nhiều tùy chọn. Mặc định, các lựa chọn được hiển thị dưới dạng hộp kiểm. Giá trị được lưu là danh sách các giá trị lựa chọn đã chọn, ngăn cách nhau bởi dấu cách.

Cấu hình XLSForm cơ bản

Bảng tính survey:

typenamelabel
select_multiple cropscrops_grownHộ gia đình trồng loại cây nào?

Bảng tính choices:

list_namenamelabel
cropsmaizeNgô
cropsbeansĐậu
cropsriceLúa
cropsvegetablesRau củ
cropsotherKhác

Để biết thêm chi tiết, xem thông số kỹ thuật XLSForm.

Định dạng dữ liệu được lưu

Cột dữ liệu xuất chứa danh sách các giá trị đã chọn, ngăn cách nhau bởi dấu cách:

  maize beans vegetables
  

Dùng hàm selected() — không phải = — khi kiểm tra giá trị select_multiple trong các biểu thức (xem bên dưới).

Ứng dụng

Câu hỏi Select_multiple được dùng cho:

  1. Thu thập nhiều câu trả lời đồng thời hợp lệ (ví dụ: nguồn thu nhập, cây trồng, triệu chứng)
  2. Các mục kiểm tra dạng hộp kiểm (ví dụ: “Chọn tất cả phương án phù hợp”)
  3. Danh sách ngôn ngữ hoặc kỹ năng
  4. Bất kỳ câu hỏi nào có nhiều câu trả lời đồng thời hợp lệ

Tùy chọn hiển thị (appearance)

AppearanceMô tả
(không có)Hộp kiểm mặc định, một hộp mỗi dòng
minimalWidget chọn nhiều dạng thả xuống
compactLưới thu gọn, số cột tự điều chỉnh theo chiều rộng màn hình
compact-NLưới thu gọn cố định N cột
horizontalCác lựa chọn xếp ngang theo hàng (web)
horizontal-compactNgang, khoảng cách thu gọn (web)
labelChỉ hiển thị nhãn, không có hộp kiểm (dùng với list-nolabel)
list-nolabelChỉ hiển thị hộp kiểm, không có nhãn (dùng với label)
columns(N)Hiển thị theo N cột (phần mở rộng rtSurvey)

Ví dụ: Bố cục lưới 3 cột thu gọn

typenamelabelappearance
select_multiple symptomssymptomsChọn tất cả triệu chứng quan sát đượccompact-3

Dùng selected() trong biểu thức

Vì giá trị được lưu là chuỗi ngăn cách bởi dấu cách, bạn phải dùng selected() để kiểm tra xem một lựa chọn cụ thể đã được chọn chưa. Dùng = sẽ không hoạt động đúng.

Trong relevant

Hiển thị câu hỏi tiếp theo chỉ khi “khác” được chọn:

typenamelabelrelevant
select_multiple cropscrops_grownCây nào được trồng?
textcrops_otherVui lòng ghi rõ loại cây khácselected(${crops_grown}, 'other')

Trong constraint

Yêu cầu chọn ít nhất 2 lựa chọn:

typenameconstraintconstraint_message
select_multiple issuesissuescount-selected(.) >= 2Vui lòng chọn ít nhất 2 vấn đề

Giới hạn tối đa 3 lựa chọn:

typenameconstraintconstraint_message
select_multiple prioritiesprioritiescount-selected(.) <= 3Chỉ được chọn tối đa 3 ưu tiên

Trong calculate — ghép nhãn đã chọn

Kết hợp selected-at(), count-selected(), và choice-label() để tạo tóm tắt có thể đọc được:

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

Tùy chọn “Không có mục nào” / lựa chọn loại trừ

Một mẫu phổ biến là làm cho một tùy chọn loại trừ tất cả các tùy chọn còn lại. Dùng constraint để thực thi:

typenamelabelconstraintconstraint_message
select_multiple issuesissuesChọn tất cả vấn đề hiện cónot(selected(., 'none') and count-selected(.) > 1)“Không có” không thể chọn cùng với các tùy chọn khác

choices:

list_namenamelabel
issueswaterThiếu nước
issuesroadsĐường sá kém
issueshealthThiếu dịch vụ y tế
issuesnoneKhông có vấn đề nào

Đếm và tóm tắt các lựa chọn

HàmVí dụKết quả
count-selected(field)count-selected(${crops_grown})Số lượng lựa chọn đã chọn
selected(field, value)selected(${crops_grown}, 'maize')true/false
selected-at(field, index)selected-at(${crops_grown}, 0)Giá trị được chọn đầu tiên
choice-label(field, value)choice-label(${crops_grown}, 'maize')Nhãn của một giá trị

Thực hành tốt

  1. Luôn dùng selected() trong relevant, constraint, và calculate — không bao giờ dùng = hoặc !=.
  2. Thêm constraint để giới hạn số lượng lựa chọn tối đa nếu thiết kế câu hỏi yêu cầu.
  3. Bao gồm tùy chọn “Không có” hoặc “Không áp dụng” khi không chọn gì cũng là câu trả lời hợp lệ.
  4. Với danh sách dài (15+ lựa chọn), dùng minimal (danh sách thả xuống chọn nhiều) để tránh cuộn quá nhiều.
  5. Xuất dữ liệu và dùng tách chuỗi trong công cụ phân tích — định dạng ngăn cách bởi dấu cách cần tách trước khi phân tích tổng hợp.

Giới hạn

  • Giá trị Select_multiple không thể so sánh trực tiếp bằng =. Luôn dùng selected().
  • Kiểu hiển thị compact có thể không hiển thị tốt với nhãn lựa chọn rất dài.
  • Khi lọc lựa chọn bằng choice_filter, việc lọc áp dụng cho tất cả lựa chọn được hiển thị, giống như select_one.
Trang này có hữu ích không?