多选题
向受访者展示一组选项供其选择。支持单选、多选、"其他"自由文本输入、随机排列和按字母排序。每个选项都可以携带各自的图片、视频或图标,layout 属性可在垂直列表与图片卡片网格之间切换——因此这一种类型同时涵盖纯文本选项和基于图片的选项。

类型标识符:multiple_choice
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
choices | Choice[] | 选项数组。每个选项有 id、label 和可选的 media。 | [] |
layout | string | 选项的呈现方式:stacked(垂直列表,可带缩略图)、blocks(图片卡片网格)、staggered(按内容宽度自动换行的标签)或 grid(固定列数网格)。 | stacked |
allowMultiple | boolean | 允许受访者选择多个选项。 | false |
allowOther | boolean | 显示"其他"选项,带自由文本输入框,受访者可输入自定义答案。 | false |
randomize | boolean | 每次显示问题时随机排列选项顺序。 | false |
alphabeticalOrder | boolean | 按字母顺序排列选项。如果启用了 randomize,则忽略此设置(随机排列优先)。 | false |
choiceSource | string | 选项的来源:fixed 使用 choices;variable 从变量加载选项。见下文“来自变量的选项”一节。 | fixed |
选项对象
choices 数组中的每个选项包含:
| 字段 | 类型 | 描述 |
|---|---|---|
id | string | 此选项的唯一标识符。用于逻辑跳转和评分。 |
label | string | 选项的显示文本。 |
media | QuestionMedia | 此选项的可选图片、视频或图标。设置 media.display 可控制其呈现方式——参见下文。 |
选项媒体
任何选项都可以携带自己的媒体。media.display 决定媒体在选项上的呈现位置:
| 显示方式 | 描述 |
|---|---|
thumbnail | 选项标签旁的小图。 |
background | 图片填满选项区域,裁剪以填充。 |
background-fit | 图片填满选项区域但保持完整,以选项背景色作为留白衬底。 |
选项媒体支持与问题媒体相同的处理方式——滤镜、色调、边框、焦点和缩放。有关填充与适应的区别以及各自的适用场景,请参阅选项媒体显示。
选项媒体即原图片选择题问题类型的继任者。要构建图片卡片网格,请使用多选题并设置 layout: "blocks",同时为每个选项提供 media 对象。从 Typeform 导入的表单会自动将 picture_choice 问题转换为这种结构。
验证
如果 required 为 true,受访者必须至少选择一个选项才能继续。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
使用 equals 或 not_equals 时,比较值为选项 ID。对于多选问题,equals 检查该值是否在所选项中。
答案格式
- 单选(
allowMultiple: false):字符串(所选选项的 ID)。 - 多选(
allowMultiple: true):字符串数组(所选选项的 ID)。
测验模式评分
多选题在所有测验模式中都是可评分的问题类型:
- 知识测验:设置
correctAnswers(正确选项 ID 数组)和correctAnswerScore(每个正确答案的分数)。 - 潜客评估:设置
choiceScores(选项 ID 到分值的映射)。 - 匹配测验:设置
choiceOutcomes(选项 ID 到结束页面问题 ID 的映射)。
选项选择可使用键盘快捷键。受访者可以按字母键(A、B、C 等)选择选项,每个选项旁会显示对应的字母标识。
下拉菜单
用于从选项列表中选择的下拉菜单。支持与多选题相同的配置,但以紧凑的下拉格式显示选项。此处不适用逐选项的 media 和 layout——下拉菜单始终以纯文本呈现选项。

类型标识符:dropdown
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
choices | Choice[] | 选项数组。 | [] |
allowMultiple | boolean | 允许从下拉菜单中选择多个选项。 | false |
allowOther | boolean | 显示带自由文本输入的"其他"选项。 | false |
placeholder | string | 选择前显示的占位符文本。 | 无 |
randomize | boolean | 随机排列选项顺序。 | false |
alphabeticalOrder | boolean | 按字母顺序排列选项。 | false |
choiceSource | string | 选项的来源:fixed 使用 choices;variable 从变量加载选项。见下文“来自变量的选项”一节。 | fixed |
验证
如果 required 为 true,受访者必须至少选择一个选项。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
- 单选:字符串(所选选项的 ID)。
- 多选:字符串数组(所选选项的 ID)。
测验模式评分
下拉菜单是可评分的问题类型。评分配置与多选题相同。
图片选择题
图片选择题不再是独立的问题类型。 它已并入多选题——不再有可供选择的 picture_choice 标识符。
要实现同样的效果,请使用多选题,将 layout 设置为 blocks,并为每个选项提供 media 对象。图片选择题的全部能力依然可用,还新增了它此前不具备的处理方式:视频和图标选项、滤镜、色调、焦点、缩放,以及能完整显示宽幅图片而不裁剪的适应模式。

{
"type": "multiple_choice",
"properties": {
"layout": "blocks",
"choices": [
{ "id": "c1", "label": "Mountains", "media": { "type": "image", "url": "https://…", "display": "background" } },
{ "id": "c2", "label": "Coast", "media": { "type": "image", "url": "https://…", "display": "background" } }
]
}
}
现有表单和 Typeform 导入内容均会自动处理——picture_choice 问题会自动转换为设置了 layout: "blocks" 的多选题,无需重新编写。
是/否
呈现"是"和"否"按钮的简单二选一问题。

类型标识符:yes_no
属性
是/否问题类型除通用问题属性外没有额外属性。
验证
如果 required 为 true,受访者必须点击"是"或"否"。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
使用 equals 时,与 true(是)或 false(否)比较。字符串值 "true" 和 "false" 也被接受。
答案格式
答案存储为布尔值(true 表示是,false 表示否,未回答时为 null)。
测验模式评分
是/否是可评分的问题类型:
- 知识测验:设置
correctAnswers,值为"true"或"false"。 - 潜客评估:设置
choiceScores,键为"true"和"false"。 - 匹配测验:设置
choiceOutcomes,键为"true"和"false"。
是/否问题在选择后立即自动前进到下一个问题。没有单独的"确定"按钮。
排序
向受访者展示一组项目,通过拖拽操作按偏好顺序排列。

类型标识符:ranking
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
choices | Choice[] | 要排序的项目数组。每个项目有 id 和 label。 | [] |
choiceSource | string | 项目的来源:fixed 使用 choices;variable 从变量加载项目。见下文“来自变量的选项”一节。 | fixed |
验证
如果 required 为 true,受访者必须提交排序结果(所有项目必须有确定的顺序)。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
答案存储为字符串数组(按受访者排列顺序从第一到最后的选项 ID)。
["choice_3", "choice_1", "choice_2"]
排序字段使用拖放交互。在移动设备上,受访者可以使用触摸手势重新排列项目。
矩阵
基于网格的问题类型,受访者对多个项目(行)在多个类别(列)中进行评价。每个行列交叉处是一个可选选项。

类型标识符:matrix
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
rows | string[] | 行标签数组(被评价的项目)。 | [] |
columns | string[] | 列标签数组(评价类别)。 | [] |
randomizeRows | boolean | 随机排列行的顺序。 | false |
randomizeColumns | boolean | 随机排列列的顺序。 | false |
rowSource | string | 行的来源:fixed 使用 rows;variable 从变量加载行。见下文“来自变量的选项”一节。 | fixed |
columnSource | string | 列的来源:fixed 使用 columns;variable 从变量加载列。 | fixed |
验证
如果 required 为 true,受访者必须为每一行选择一个选项。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
答案存储为对象(Record<string, string>),将每个行标签映射到所选的列标签:
{
"Product Quality": "Excellent",
"Customer Service": "Good",
"Value for Money": "Average"
}
矩阵问题在桌面端显示为响应式网格,在移动设备上适配为堆叠格式以提高可用性。行和列支持独立随机排列。
列表
收集同一类型的多条记录。列表既可容纳纯文本项(输入并按回车键,或点击添加),也可容纳重复的复合组件项——由可复用的复合组件构建的结构化记录,例如将任意数量的董事会成员添加到单个问题中。
类型标识符:list
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
itemType | string | string 表示纯文本项,composite 表示可重复的复合组件实例。 | string |
compositeId | string | 引用的复合组件(仅限复合组件项)。通过选择器设置。 | — |
itemPlaceholder | string | 记录输入框的占位符文本(文本项)。 | — |
addButtonLabel | string | 两种项目模式下添加按钮的自定义标签。 | — |
minItems | number | 提交所需的最少项目数。 | — |
maxItems | number | 最大项目数。硬性上限 100。 | 100 |
itemRegex | string | 逐项验证格式(文本项)。 | — |
itemRegexError | string | 格式验证失败时显示的错误消息。 | — |
itemMinLength | number | 每项的最少字符数(文本项)。 | — |
itemMaxLength | number | 每项的最多字符数(文本项)。 | — |
allowDuplicates | boolean | 允许同一文本项被添加两次(文本项)。 | true |
allowReorder | boolean | 允许受访者拖动项目以重新排序(文本项)。 | true |
defaultItems | string[] | 问题首次加载时预填充的项目(文本项,网页表单)。 | [] |
displayMode | string | 已折叠的复合组件记录如何呈现:compact(单行摘要)或 card(每个字段的标签 + 值)。 | compact |
compactFields | string[] | 在紧凑折叠摘要中显示的有序子字段 ID。默认为复合组件的第一个字段。 | — |
验证
如果 required 为 true,必须至少添加一个项目。minItems / maxItems 在提交时强制执行;逐项的格式和长度规则(文本项)在每个项目添加时强制执行。
逻辑跳转运算符
list_count_equals、list_count_greater_than、list_count_less_than、contains、not_contains、is_answered、is_not_answered
计数运算符与答案中的项目数量进行比较。
答案格式
- 文本项:一个字符串数组。
- 复合组件项:一个对象数组,每个对象以子字段 ID 为键:
[
{ "sub_first_name": "Ada", "sub_email": "ada@example.com" },
{ "sub_first_name": "Grace", "sub_email": "grace@example.com" }
]
每个复合组件项也会被记录为一条独立的复合组件记录——有关跨表单的记录视图和折叠显示模式,请参阅复合组件指南。
来自变量的选项
多选题、下拉菜单和排序题可以从变量加载选项,而不是使用固定列表——通常是调用您 API 的数据节点返回的响应。矩阵题的行、列或两者也可以这样加载。
设置方法
- 添加一个返回列表的数据节点,并为它设置响应变量,例如
breeds。 - 在问题设置中,将选项来源从默认的固定列表改为来自变量。矩阵题请使用行来源和列来源。
- 输入保存该列表的变量:
{breeds},或指向响应内部的路径,例如{breeds.data}。 - 如果您的条目不使用
label和value这两个键,请打开您的条目使用其他字段名?,并填写您的数据所用的标签字段和值字段。
在 NueForm 样式表单中,请把数据节点放在该问题之前。在问卷样式表单中,请将数据节点的运行时机设为保持更新,让列表随受访者的回答而变化——参见问卷样式。
这些来源设置只对直接放在表单中的问题提供。对于位于问题组、多问题页面或复合组件中的问题,构建器不会显示这些设置,因为这些问题的答案保存在其上级问题的答案中,无法保留标签。已经从变量加载选项的问题被移入其中后仍会保留该设置,但其回复会显示条目的值,而不是标签。
在构建器画布上,该问题会显示“来自 {breeds} 的选项”来代替其选项。
支持的格式
变量必须包含一个 JSON 列表——可以是简单的字符串,每个字符串同时作为标签和值:
["Siamese", "Persian"]
也可以是带标签和值的对象:
[
{ "label": "Siamese", "value": "siamese" },
{ "label": "Persian", "value": "persian" }
]
使用其他键的对象同样可用——用标签字段和值字段指定这些键。对于下面的响应,请使用变量 {breeds.data},标签字段填 name,值字段填 id:
{ "data": [{ "name": "Siamese", "id": "siamese" }, { "name": "Persian", "id": "persian" }] }
在多选题中,条目还可以带一个 image URL,它会成为该选项的图片:
[{ "label": "Siamese", "value": "siamese", "image": "https://example.com/siamese.jpg" }]
如果响应是一个对象,请用点路径(例如 {breeds.data})指向其中的列表。如果键不是一个简单的单词,请使用 {breeds["the list"]}。
条目的读取方式
- 每个条目的值会成为它的选项 ID。答案存储的就是这个值,逻辑条件比较的是它,测验评分匹配的也是它。
- 如果某个对象只有标签或只有值,则两者都使用这一项。数字和
true/false会被当作文本读取。 - 没有值的条目、与前面条目值重复的条目会被跳过,超过 500 个字符的值也会被跳过。超过 500 个字符的标签会被截短,并且最多只使用前 1,000 个条目。
- 标签以纯文本显示:不会应用任何格式,其中的
{variable}标记也不会被替换。 - “其他”选项在多选题和下拉菜单中仍然可用:它会显示在加载的条目之后。
- 问题的其他设置——例如允许多选、随机排序和按字母顺序排列——照常作用于加载的条目。
- 数据节点最多保留其响应的 4,096 个字符,因此较长的列表可能会被截断。参见变量中的“将数据节点响应用作选项列表”一节。
受访者看到的内容
不会回退到固定列表。在变量包含可用列表之前,问题不会显示选项,而是显示下表前三条提示之一。最后一条提示会在列表变化后显示在选项上方:
| 提示 | 出现时机 |
|---|---|
| 正在加载选项… | 填充该列表的数据节点正在运行。 |
| 回答上方的问题后,选项将会显示。 | 变量仍为空——通常是因为数据节点还在等待某个回答。 |
| 无法加载这些选项。 | 变量中没有可用的列表。构建器预览还会告诉您原因。 |
| 已根据您之前的回答更新。 | 列表发生了变化,受访者之前选中的某个选项已不再提供,因此被清除。 |
保存的回答
- 答案存储条目的值,与选项 ID 的存储方式完全相同。对于矩阵题,答案会把每一行的值对应到所选列的值。
- 受访者看到的标签会随答案一起保存,因此回复、CSV 导出和通知邮件显示的是标签而不是值。
- Webhook 会发送这些值,并附带一个
valueLabels映射,把每个选中的值对应到它的标签——网页提交和电话提交都是如此。 - 列表是在受访者填写表单时加载的,因此 NueForm 不会再根据列表核对提交的值。必填问题仍会强制要求作答。如果某个答案必须是您自己的条目之一,请在处理回复时在您的系统中进行校验。
评分与条件
- 评分:没有可勾选的固定列表,因此评分编辑器会改为让您输入条目的值,且必须完全一致(“需与条目的值完全一致。”)。参见表单模式中的“为来自变量的选项评分”一节。
- 条件:针对这些问题的逻辑跳转和可见性条件使用文本运算符和手动输入的值;对于矩阵题,条件编辑器只提供
is_answered和is_not_answered,因为它的答案是把行对应到列。参见逻辑跳转中的“来自变量的选项的条件”一节。 - 电话通话:语音代理会朗读列表中的所有选项,来电者可以说出选项或按下对应的数字。参见电话中的“来自变量的选项”一节。
来源属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
choiceSource | string | fixed 使用 choices。variable 从 choiceVariable 加载选项,此时忽略 choices。 | fixed |
choiceVariable | string | 保存列表的变量,例如 {breeds} 或 {breeds.data}。 | — |
choiceLabelField | string | 条目为对象时:保存每个条目标签的键。 | label |
choiceValueField | string | 条目为对象时:保存每个条目值的键。 | value |
矩阵题的每个方向都有同样的一组属性:rowSource、rowVariable、rowLabelField、rowValueField,以及 columnSource、columnVariable、columnLabelField、columnValueField。