You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否让REDCap的单项下拉列表仅显示用户此前勾选的选项?

问卷下拉框仅展示已勾选选项的实现方案

一、利用问卷工具原生「动态选项」功能(优先推荐)

大部分专业问卷工具(如Qualtrics、SurveyMonkey)都内置了基于前序答案过滤选项的功能——分支逻辑是控制问题是否显示,而动态选项是直接过滤选项列表,操作步骤大致如下:

  • 给「最重要」「第二重要」「第三重要」三个下拉问题分别配置选项过滤规则:
    • 规则条件:仅显示前序复选框问题中被参与者勾选过的选项
    • 关键注意点:要确保前序复选框的选项文本、编码值和下拉框的选项完全匹配,否则过滤会失效
  • 特殊场景处理:如果参与者只勾选了1-2个原因,可给多余的排序下拉框设置默认提示(如「无更多可选原因」),或直接用分支逻辑隐藏多余的排序问题

二、自定义脚本实现(适用于支持HTML/JS自定义的工具)

如果工具原生功能不支持,可通过嵌入JavaScript动态修改下拉框选项:

  1. 为前序复选框问题设置唯一ID(比如reason-checkboxes)
  2. 给三个下拉问题分别设置唯一ID(比如top1-select、top2-select、top3-select)
  3. 编写脚本收集已勾选选项,替换下拉框原有选项:
// 收集复选框选中的选项文本
const checkedItems = Array.from(document.querySelectorAll('#reason-checkboxes input:checked'))
  .map(el => el.nextElementSibling.textContent);

// 更新下拉框选项的通用函数
function refreshSelect(selectId) {
  const select = document.getElementById(selectId);
  select.innerHTML = '';
  checkedItems.forEach(item => {
    const option = document.createElement('option');
    option.textContent = item;
    option.value = item;
    select.appendChild(option);
  });
}

// 初始化更新三个下拉框
refreshSelect('top1-select');
refreshSelect('top2-select');
refreshSelect('top3-select');
  • 提示:脚本需要适配工具的DOM结构,部分工具会动态生成页面元素,可能需要添加页面加载完成的监听后再执行代码

三、替代方案:用排序题替换下拉框

如果上述方法都无法落地,可直接把三个下拉问题替换为**「限定最多3项的排序题」**,同时设置排序题的选项仅显示前序复选框的已勾选内容(利用动态选项规则),这样参与者只能从自己选过的原因里排序,更贴合需求逻辑

内容的提问来源于stack exchange,提问作者rainywaterlily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:08:14