如何在Qualtrics问卷中根据回答条件添加文本框
嘿,这个需求在Qualtrics里完全能搞定!我给你准备了两种实现方案——一种不用写代码,靠Qualtrics内置逻辑就能搞定;另一种用JavaScript动态生成,更灵活适配任意数量:
方案1:无代码实现(适合新手)
这个方法核心是用显示逻辑控制预设文本框的显示,操作简单:
- 第一步:创建第一个问题,类型选「文本输入」,问题文本设为「您使用多少个文件?请命名它们」,然后在「验证」里设置输入格式为「整数」,确保受访者只能输入数字。
- 第二步:在同一个Block里,创建N个(比如20个,足够覆盖大部分场景)独立的「文本输入」问题,每个问题的文本设为「文件名称:」。
- 第三步:给每个文本框问题设置显示逻辑:
- 第1个额外文本框:逻辑设为「如果第一个数字问题的回答 ≥1」时显示
- 第2个额外文本框:逻辑设为「如果第一个数字问题的回答 ≥2」时显示
- 以此类推,第K个文本框的逻辑就是「回答 ≥K」
- 小技巧:如果担心预设数量不够,多建几个也没关系,没达到条件的文本框会自动隐藏,不会干扰受访者。
方案2:JavaScript动态生成(灵活适配任意数量)
如果想支持受访者输入任意数字(比如超过20个),就用这个方法,动态生成对应数量的文本框:
- 第一步:先创建数字输入问题,类型「文本输入」(整数格式),给它设置一个问题ID:点击右上角齿轮→「问题选项」→「设置问题ID」,比如设为
FileCount,记好这个ID后面要用。 - 第二步:创建一个「描述性文本」问题,问题文本留空,设置问题ID为
FileNamesContainer,用来承载动态生成的文本框。 - 第三步:点击这个描述性文本问题的齿轮→「添加JavaScript」,粘贴以下代码:
Qualtrics.SurveyEngine.addOnload(function() { // 获取受访者输入的文件数量 var fileCount = parseInt('${q://QID_FileCount/SelectedAnswer}'); var container = this.getQuestionContainer(); // 清空容器原有内容 container.innerHTML = ''; // 生成对应数量的文本框 if (!isNaN(fileCount) && fileCount > 0) { for (var i = 1; i <= fileCount; i++) { // 创建标签和输入框 var label = document.createElement('label'); label.textContent = `文件${i}名称:`; var input = document.createElement('input'); input.type = 'text'; input.name = `FileName_${i}`; input.className = 'InputText'; // 匹配Qualtrics默认样式 // 组装成一行并添加到容器 var row = document.createElement('div'); row.appendChild(label); row.appendChild(input); container.appendChild(row); } } else { container.innerHTML = '<p>请先输入有效的文件数量哦</p>'; } // 提交页面时保存输入的文件名到嵌入式数据 this.addOnPageSubmit(function() { for (var i = 1; i <= fileCount; i++) { var input = document.querySelector(`input[name="FileName_${i}"]`); if (input) { Qualtrics.SurveyEngine.setEmbeddedData(`FileName_${i}`, input.value); } } }); });
- 注意:把代码里的
QID_FileCount换成你实际设置的数字问题的QID(在数字问题的「问题选项」里能找到)。 - 提前准备:在「调查流程」里创建嵌入式数据字段(比如
FileName_1、FileName_2...),这样提交的文件名才能被保存下来,方便后续导出数据。
小提醒
- 不管用哪种方法,一定要多测试几个数值(比如0、1、5、10),确保显示和保存都正常。
- 用无代码方案时,记得把所有文本框和数字问题放在同一个Block里,这样显示逻辑才能实时触发。
- 用JS方案时,确保你的调查允许自定义JavaScript(默认是开启的,要是没生效可以去「调查选项」里检查)。
内容的提问来源于stack exchange,提问作者Valeria Lobos Ossandán
相关产品推荐
相关产品推荐

