![](/img/trans.png)
[英]Load images randomly using javascript in qualtrics loop and merge block
[英]Prematurely exiting a Loop and Merge block in Qualtrics
我目前正在开展一项 Qualtrics 调查,其中受访者必须解决一长串字谜,然后回答一些人口统计问题。
为了使字谜部分更容易,我使用了循环和合并块:第一个字段是要解决的字谜,第二个字段是字谜的解决方案,因此调查可以根据答案检查受访者的答案每个字谜的解决方案。
实际上,该调查运行良好:但是,我希望通过在响应字段中键入“EXIT”来允许受访者提前退出循环,并将他们重定向到下一个问题块(人口统计问题)。
这通常是使用“跳过”逻辑来实现的:但是,跳到块的末尾并不能解决问题(循环重新启动)。 我设法将它们重定向到调查的末尾,但没有重定向到人口统计问题块。
有没有办法使用javascript跳转到人口统计块或退出循环并过早合并块? 我是否缺少可以解决问题的 Qualtrics 选项?
如果这仍然与您相关:我需要相同的功能,这就是我解决它的方法:首先,我定义了一个辅助变量,将其EndLoop
,我将其初始化为 0。然后我设置了一个函数来更改人们按下按钮后 EndLoop 为 1,另外我在循环中的问题中添加了一个显示逻辑,仅当 EndLoop 仍然为 0 时才显示它们,并在 EndLoop 为 1 时立即隐藏问题。
这是分步说明以及 javascript 和 html 代码。
大胆的东西是你需要做的,项目符号是一个更详细的说明如何去做。
1. 在循环和合并之前定义一个名为EndLoop
的嵌入数据字段并将其初始化为 0。
2. 为循环中的每个项目设置一个显示逻辑,以在 'EndLoop' = 0 条件下显示它们
EndLoop
+ 选择“等于”+ 类型 0 作为值3. 将自定义按钮插入人们应该能够选择退出的页面。 该按钮运行一个名为 setEndLoop() onclick 的用户定义函数。
我使用的代码是:
<input id="css-class-mybutton" onclick="setEndLoop()" value=" done " type="button">
如果要更改按钮文本,请更改value = " done "
4. 使用自定义 javascript 定义函数 setEndLoop() 将 EndLoop 的值更改为 1 并模拟下一个按钮单击
我使用的代码是:
/* Get the EndLoop variable */
var EndLoop = "${e://Field/EndLoop}";
Qualtrics.SurveyEngine.addOnload(function(){
/* hide previous and next button */
$('NextButton') && $('NextButton').hide();
$('PreviousButton') && $('PreviousButton').hide();
/* Function: on click on user-defined button -> change the field EndLoop */
var that = this;
setEndLoop = function(){
Qualtrics.SurveyEngine.setEmbeddedData('EndLoop', 1);
that.clickNextButton();
};
});
该按钮将没有默认样式,因此,定义一个自定义 css 来设置您的按钮样式,使其看起来像您的主题按钮。 我在这里使用的按钮的类名是id="css-class-mybutton"
,在 css 中使用.css-class-mybutton{ ... }
。
希望有帮助。
我知道这有点晚了,但我遇到了类似的问题并想发布替代解决方案。 我使用了循环和合并功能,但我不想让参与者单击按钮退出循环,而是想使用多项选择题来退出循环。 这个问题是,“你要问更多问题吗?”,回答是和否。 如果参与者选择“是”,他们将继续循环,如果他们选择“否”,他们将退出循环并继续下一个问题块。
我的前两个步骤与上面的相同。
1.设置一个名为 EndLoop 的嵌入数据字段并将值设置为 1。 - 在调查流面板中选择添加一个元素。 然后输入名称 EndLoop。 - 然后现在选择设置值并将值设置为 1。 - 确保这是在调查流程中的循环和合并块之前。
对于循环和合并块中的每个问题,使用显示逻辑来确保它们仅在嵌入的数据元素 EndLoop 为 1 时显示。
现在是“你想多问一些问题吗?”的问题。 在 add javascript 区域中添加以下代码。
Qualtrics.SurveyEngine.addOnload(function() {
/将您的 Javascript 放在此行下方/
});
我的整个代码如下所示:
Qualtrics.SurveyEngine.addOnload(function ()
{
this.questionclick = function(event,element)
{
console.log(event, element);
if (element.type == 'radio')
{
var choiceNum = element.id;
if (choiceNum == 2)
{
Qualtrics.SurveyEngine.setEmbeddedData("EndLoop", choiceNum);
}
}
}
});
我使用了第二种解决方案。 这是脚本的一个小修正:我写了element.id.split('~')[2]
而不是element.id
,它起作用了!
Qualtrics.SurveyEngine.addOnload(function ()
{
this.questionclick = function(event,element)
{
console.log(event,element);
if (element.type == 'radio')
{
var choiceNum = element.id.split('~')[2];
if (choiceNum == 2)
{
Qualtrics.SurveyEngine.setEmbeddedData("EndLoop", choiceNum);
}
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.