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

Qualtrics多选问题如何传递选中的最大年份值?

Qualtrics多选问题无法正确获取选中最大年份的修复方案

问题场景

在Qualtrics中设置了一个多选年份的问题(选项:2019、2020、2021、2022、2023),需要将用户选中的最大年份存入嵌入式数据largestYear,但绑定的JS代码始终返回初始化的2019,无法正确获取选中的最大年份。

问题根源

  1. 事件选择不当:原代码使用questionclick事件,该事件会在点击问题区域任意位置时触发,且可能在Qualtrics更新选中状态类之前执行,导致选中判断失效。
  2. 元素定位错误:依赖td:first获取年份文本,Qualtrics的主题模板可能会调整表格结构,导致该选择器无法正确抓取到年份内容。
  3. 初始值逻辑缺陷:固定初始化max=2019,若用户未选中2019但选中更大年份,初始值会干扰最终结果。

修复后的代码

Qualtrics.SurveyEngine.addOnload(function() {
    var questionId = this.questionId;
    // 监听复选框的状态变化事件,精准响应选中/取消操作
    jQuery("#" + questionId + " input[type='checkbox']").on("change", function() {
        var maxYear = null;
        // 遍历所有复选框
        jQuery("#" + questionId + " input[type='checkbox']").each(function() {
            if (this.checked) {
                // 定位到Qualtrics标准的选项文本容器,获取年份并去除空格
                var yearText = jQuery(this).closest("tr").find(".LabelWrapper").text().trim();
                var currentYear = parseFloat(yearText);
                // 更新最大年份
                if (maxYear === null || currentYear > maxYear) {
                    maxYear = currentYear;
                }
            }
        });
        // 仅当有选中项时设置嵌入式数据
        if (maxYear !== null) {
            Qualtrics.SurveyEngine.setEmbeddedData('largestYear', maxYear);
        }
    });
});

关键改动说明

  • 改用change事件:仅在复选框状态变化时触发,避免无效点击干扰,且确保状态已更新后再执行逻辑。
  • 精准定位文本元素:使用.LabelWrapper选择器获取选项文本,这是Qualtrics存储显示文本的标准容器,不受主题结构变化影响。
  • 优化初始值逻辑:将maxYear初始化为null,仅在有选中项时更新,避免初始值覆盖正确结果。
  • 文本预处理:用trim()去除文本中的空格,避免因空格导致parseFloat解析失败。

备选方案(若使用选项编码值)

如果为年份选项设置了编码(比如1=2019、2=2020…5=2023),可直接通过编码值计算年份,更稳定:

Qualtrics.SurveyEngine.addOnload(function() {
    var questionId = this.questionId;
    jQuery("#" + questionId + " input[type='checkbox']").on("change", function() {
        var maxCode = null;
        jQuery("#" + questionId + " input[type='checkbox']").each(function() {
            if (this.checked) {
                var code = parseInt(jQuery(this).attr("data-value"));
                if (maxCode === null || code > maxCode) {
                    maxCode = code;
                }
            }
        });
        if (maxCode !== null) {
            var largestYear = 2018 + maxCode; // 编码1对应2019,以此类推
            Qualtrics.SurveyEngine.setEmbeddedData('largestYear', largestYear);
        }
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:55:57