繁体   English   中英

过早退出 Qualtrics 中的循环和合并块

[英]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。

  • 转到调查流程面板
  • 添加新元素 > 选择嵌入的数据字段
  • 将字段命名为“EndLoop”
  • 通过单击链接“立即设置值”将其值 t0 设置为数字 0
  • 确保在合并循环块之前移动它

2. 为循环中的每个项目设置一个显示逻辑,以在 'EndLoop' = 0 条件下显示它们

  • 转到循环中每个问题的选项菜单
  • 选择“添加显示逻辑”
  • 从第一个下拉菜单中选择“嵌入数据”
  • 一个新的类型字段打开 > 作为名称类型EndLoop + 选择“等于”+ 类型 0 作为值

3. 将自定义按钮插入人们应该能够选择退出的页面。 该按钮运行一个名为 setEndLoop() onclick 的用户定义函数。

  • 单击按钮应出现的问题
  • 在问题文本的右上角选择“html view”
  • 我使用的代码是:

     <input id="css-class-mybutton" onclick="setEndLoop()" value=" done " type="button">
  • 如果要更改按钮文本,请更改value = " done "

4. 使用自定义 javascript 定义函数 setEndLoop() 将 EndLoop 的值更改为 1 并模拟下一个按钮单击

  • 转到循环中每个问题的选项菜单
  • 选择“添加 JavaScript”

我使用的代码是:

    /* 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。 - 确保这是在调查流程中的循环和合并块之前。

  1. 对于循环和合并块中的每个问题,使用显示逻辑来确保它们仅在嵌入的数据元素 EndLoop 为 1 时显示。

  2. 现在是“你想多问一些问题吗?”的问题。 在 add javascript 区域中添加以下代码。

    • 单击屏幕左侧问题编号下的高级选项按钮可以找到 javascript 区域。 选择“添加 javascript...”
      • 将有一些代码已经存在......它应该看起来像这样:

    Qualtrics.SurveyEngine.addOnload(function() {

    /将您的 Javascript 放在此行下方/

    });

    • Basically I used event tracking to update the embedded data field EndLoop to the numerical value associated with the answer choice when the answer choice was selected. 在这种情况下,答案“是”的值为 1,因为它是第一个选项,而“否”的值为 2,因为它是第二个选项。 When "No" was selected, the embedded data field EndLoop was set to a value of 2. This then meant that none of the questions would display since they have display logic to ensure they only display when the EndLoop field is 1.

我的整个代码如下所示:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM