【发布时间】:2018-02-15 23:53:15
【问题描述】:
虽然此问题已多次解决 here 和 here,但后续 Qualtrics 更新使继续应用这些解决方案变得困难。
我的目标:计算包含 2 个问题的回答的文本框的数量,并使用该数字来确定第三个问题中显示的内容。在分隔第二个和第三个问题的页面上的文本问题类型中使用的以下 javascript 代码可以正常工作:
Qualtrics.SurveyEngine.addOnload(function()
{
//Count up the number of text boxes with anything in them
var count = 0;
if('${q://QID1/ChoiceTextEntryValue/1}') count++;
if('${q://QID1/ChoiceTextEntryValue/2}') count++;
//etc...
if('${q://QID2/ChoiceTextEntryValue/1}') count++;
if('${q://QID2/ChoiceTextEntryValue/2}') count++;
//etc...
//Set count as embedded data (added to survey flow earlier)
Qualtrics.SurveyEngine.setEmbeddedData('count', count);
};
问题是我的第二个和第三个问题之间有一个无用的页面。如果我使用显示逻辑通过此代码隐藏我的介入问题,则代码不会执行。如果我使用 javascript 隐藏问题并按照here 的描述自动移至下一页,它可以工作,但是用户无法返回调查,因为jQuery('#NextButton').click(); 将他们返回到第三个问题。我已经尝试将上述代码包装在替代 NextButton 代码中,并将其移动到具有 QID2 的同一页面,如 here 所示,至少有一个我可以弄清楚的更新:
this.hideNextButton ();
$('NextButton').insert({
before: "<input id=\"checkButton\" type=\"button\" value=\" -> \" title=\" -> \">"
});
$('checkButton').onclick = function() {
//Previous count and set code here
$('NextButton').click();
};
这适用于从 QID1(位于上一页)计算所有内容,但不能从 QID2(同一页面)计算所有内容。
我还尝试在addOnReady 和addOnUnload 中放置代码,但无济于事。
我需要的是 1) 更新解决方案,将问题隐藏在中间页面上,修改页面上的“后退”按钮,用我的第三个问题将参与者踢回 两个 页,或 2) 对替代按钮解决方案的更新,该解决方案将从同一页面上的问题中获取计数。
【问题讨论】:
-
我建议通过将模糊事件侦听器添加到输入字段来即时计算和更新计数。您无需对“下一步”按钮或隐藏页面进行任何操作。除了初始化计数之外,这两个问题的脚本基本上是相同的。
-
@T.Gibbons,是的,这行得通。我在答案中包含了完整的代码。谢谢!
标签: javascript jquery qualtrics