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

时间:2014-09-10 13:06:04

标签: javascript loops merge logic qualtrics

我目前正在进行Qualtrics调查,受访者必须解决一长串字谜问题,然后回答一些人口统计问题。

为了使anagram部分更容易,我使用了循环和合并块:第一个字段是要解决的字谜,第二个字段是anagram的解决方案,因此调查可以检查答案针对每个anagram的解决方案的受访者。

实际上,调查工作正常:但是,我想允许受访者通过在响应字段中键入“EXIT”来过早退出循环,并将其重定向到下一个问题块(人口统计问题) )。

这通常是使用“跳过”逻辑实现的:然而,跳到块的末尾不会起作用(循环重启)。我设法将它们重定向到调查结束,但没有重定向到人口问题块。

有没有办法使用javascript跳转到人口统计块或提前退出循环和合并块?我是否错过了可以解决问题的Qualtrics选项?

3 个答案:

答案 0 :(得分:4)

如果这仍然与你相关:我需要相同的功能,这就是我解决它的方法:首先,我定义一个辅助变量,称之为EndLoop,我将其初始化为0.然后我设置在人们按下按钮后将EndLoop的值更改为1的函数,另外我在循环中向问题添加显示逻辑,仅在EndLoop仍为0时显示它们并在EndLoop为1时立即隐藏问题。

这是一步一步的说明以及javascript和html代码。

大胆的东西就是你需要做的事情,更多详细说明如何做到这一点。

<强> 1。在您的循环并合并define an embedded data field之前调用EndLoop并将其初始化为0。

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

<强> 2。对于循环set a display logic中的每个项目,以“EndLoop”= 0

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

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

  • 点击按钮应显示的问题
  • 在问题文字的右上角选择“html view”
  • 我使用的代码是:

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

  • 中的“完成”

<强> 4。使用自定义javascropt定义函数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 :(得分:3)

我知道这有点晚了,但我有一个类似的问题,并想发布一个替代解决方案。我使用了循环和合并功能,但我不希望让参与者点击按钮退出循环,而是我想使用多项选择问题来退出循环。这个问题是,“你想问更多问题吗?”,回答是和否。如果参与者选择“是”,他们将继续循环,如果他们选择“否”,他们将退出循环并继续下一个问题块。

我的前两个步骤与上述步骤相同。

1.设置名为EndLoop的嵌入数据字段,并将值设置为1。       - 在调查流程面板中选择添加元素。然后输入名称EndLoop。       - 然后立即选择设定值并将值设置为1。       - 确保这是在调查流程中的循环和合并块之前。

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

  2. 现在提出问题“你想问更多问题吗?”在add javascript区域中添加以下代码。

    • 可以通过单击屏幕左侧问题编号下的高级选项按钮找到javascript区域。选择“添加javascript ...”
      • 将会出现一些代码......它应该如下所示:

    Qualtrics.SurveyEngine.addOnload(()的函数 {

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

    });

    • 基本上,当选择了答案选项时,我使用事件跟踪将嵌入数据字段EndLoop更新为与答案选项关联的数值。在这种情况下,答案“是”的值为1,因为它是第一个选项,“否”的值为2,因为它是第二个选项。当选择“否”时,嵌入数据字段EndLoop被设置为值2.这意味着没有任何问题会显示,因为它们具有显示逻辑以确保它们仅在EndLoop字段为1时显示。
  3. 我的整个代码如下:

    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);
                }
            }
        }
    });
    

答案 2 :(得分:-1)

我使用了第二种解决方案。这是对该脚本的一个较小的更正: 我写的是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);
        }
    }
}
});