REDCap中基于age和BMI数值字段自动填充radio字段var1的求助
REDCap自动填充单选字段解决方案(age>2且BMI>15时设为Yes)
针对你使用REDCap 14.0.15遇到的@CALCTEXT、@SHOWCHOICE无效问题,提供两种可行方案:
方案一:使用@DEFAULT逻辑表达式
这是REDCap原生支持的后端计算方式,适用于大多数场景:
- 进入
var1字段的编辑界面 - 在「Default Value」输入框中填入:
@DEFAULT(if([age]>2 and [BMI]>15, 'Yes', 'No')) - 确保
age和BMI字段为数值类型(文本数值字段需保证输入内容可解析为数字) - 保存设置后,页面加载或字段值更新时,
var1会自动根据条件填充对应选项,且数据导入、批量编辑场景下也能生效。
方案二:自定义JavaScript实时触发
若需要前端即时响应输入变化,可添加自定义JS:
- 进入项目「项目设置」→「自定义JavaScript」,粘贴以下代码:
// 监听age和BMI字段的输入变化 $(document).on('change input', '[name="age"], [name="BMI"]', function() { const age = parseFloat($('[name="age"]').val()); const bmi = parseFloat($('[name="BMI"]').val()); const var1Radio = $('[name="var1"]'); if (!isNaN(age) && !isNaN(bmi) && age > 2 && bmi > 15) { var1Radio.find('input[value="Yes"]').prop('checked', true).trigger('change'); } else { var1Radio.find('input[value="No"]').prop('checked', true).trigger('change'); } }); // 页面初始化时执行一次 $(document).ready(function() { $('[name="age"]').trigger('change'); });
- 注意:若为纵向重复表单项目,需将选择器修改为
[name^="age["], [name^="BMI["]以匹配重复实例字段。
额外注意事项
- 确认代码中字段变量名(如
age、BMI)与项目实际字段变量名完全一致 - @DEFAULT方法依赖REDCap的后端计算逻辑,JS仅在前端页面操作时生效,可根据需求选择
内容的提问来源于stack exchange,提问作者Pivot
相关产品推荐
相关产品推荐

