求助:在Qualtrics问卷中统计文本输入框有效作答数量
搞定Qualtrics文本框填写数量统计的超详细步骤
嘿,别慌!完全没接触过Qualtrics和JS也没关系,我给你拆成超简单的步骤,跟着做就能搞定统计文本框填写数量的需求~
第一步:先准备好存储数据的“容器”(创建嵌入数据变量)
我们需要一个固定的地方存统计出来的数量,这样后面的Block才能调用它:
- 打开问卷的「设置」页面,点击左侧菜单的「嵌入数据」
- 点击「添加嵌入数据」,输入变量名
FilledTextBoxCount(这个名字你可以自己改,但后面代码里要完全对应上) - 保存后,确保这个变量的位置在你要统计的那个Block之前(比如直接放在问卷开头的位置就行)
第二步:给要统计的文本框做标记(添加统一类名)
为了让代码能精准找到所有要统计的文本框,我们给每个目标文本框加个统一的“身份标签”:
- 打开你要统计的每个文本输入问题,点击右上角的齿轮图标 → 「问题设置」
- 切换到「自定义HTML」标签,找到里面的
<input>标签(看起来像<input type="text" ...>这样) - 在这个标签里加上
class="countable-textbox",比如修改后变成:<input type="text" class="countable-textbox" ...> - 每个需要统计的文本问题都要做这个操作,改完记得保存设置
- 如果是多行文本框(textarea),同样给
<textarea>标签加这个类名就行
第三步:写统计代码(Block JavaScript)
现在我们要写一段简单的代码,在用户填完这个Block后自动统计有效填写的数量:
- 找到你要统计的那个Block,点击Block右上角的齿轮图标 → 「Block设置」
- 切换到「JavaScript」标签,选择「在Block结束时运行」
- 把下面的代码粘贴进去,然后保存:
Qualtrics.SurveyEngine.addOnBlockEnd(function() { // 初始化计数器,一开始数值为0 let filledCount = 0; // 找到所有带countable-textbox类的输入框 const textboxes = document.querySelectorAll('.countable-textbox'); // 挨个检查每个输入框的内容 textboxes.forEach(function(input) { // 去掉输入内容前后的空格,再判断是否有有效内容 if(input.value.trim() !== '') { filledCount++; // 有有效内容就把计数器加1 } }); // 把统计结果存到我们之前创建的嵌入数据变量里 Qualtrics.SurveyEngine.setEmbeddedData('FilledTextBoxCount', filledCount); });
第四步:在末尾Block调用统计结果
现在你可以在问卷末尾的Block里直接用这个统计数值来计算报酬了:
- 比如在报酬说明的问题文本里,直接写
${e://Field/FilledTextBoxCount}就能调用这个数值 - 举个例子:
你一共填写了${e://Field/FilledTextBoxCount}个有效文本框,对应的报酬为${e://Field/FilledTextBoxCount}×1元=${e://Field/FilledTextBoxCount}元(你可以根据自己的报酬规则调整计算逻辑) - 如果需要设置不同数量对应不同报酬档次,还可以用Qualtrics的「逻辑分支」功能,基于
FilledTextBoxCount的数值设置不同的显示内容
一些要注意的小细节
- 类名要拼写一致!JS是大小写敏感的,
countable-textbox不要写成Countable-Textbox或者其他变体 - 测试的时候一定要预览问卷,填写几个文本框提交后,看看末尾的数值是否正确显示
- 如果你的Block有多个页面,这个代码会在整个Block结束时统计所有页面的文本框,不用每个页面单独写代码
内容的提问来源于stack exchange,提问作者RRTG
相关产品推荐
相关产品推荐

