提前退出质量循环和合并块

问题描述 投票:2回答:2

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

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

照原样,该调查运行良好:但是,我想允许受访者过早退出循环,方法是在响应字段中输入“ EXIT”,然后将其重定向到下一个问题块(人口统计问题) 。

这通常是使用“跳过”逻辑实现的:但是,跳到块的末尾并不能解决问题(循环重新开始)。我设法将它们重定向到调查的结尾,但没有重定向到人口统计问题块。

有没有一种方法可以使用JavaScript来跳到人口统计数据块或退出循环并过早合并数据块?我是否缺少可以解决问题的Qualtrics选项?

javascript loops merge logic qualtrics
2个回答
4
投票

如果这仍然与您相关:我需要相同的功能,并且这是我解决的方法:首先,我定义一个帮助程序变量,将其命名为EndLoop,并将其初始化为0。然后将一个函数设置为在人们按下按钮后将EndLoop的值更改为1,此外,我在循环中为问题添加了显示逻辑,仅当EndLoop仍为0时才显示它们,并在EndLoop为1时隐藏问题。]]

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

粗体是您需要做的,项目符号指出了如何执行的详细说明。

1。在循环合并define an embedded data field之前将其称为EndLoop,并将其初始化为0。

  • 转到调查流程面板
  • 添加新元素>选择嵌入式数据字段
  • 将字段命名为“ EndLoop”
  • 通过单击链接“立即设置值”将其值t0设置为数字0
  • 确保将其移动到合并和循环块之前
  • 2。对于循环中的每个项目,set a display logic以“ EndLoop” = 0]为条件来显示它们

    • 转到循环中每个问题的选项菜单
  • 选择“添加显示逻辑”
  • 从第一个下拉菜单中选择“嵌入式数据”
  • 打开一个新类型字段>作为名称类型EndLoop +选择“等于” +输入0作为值
  • 3。将自定义按钮插入人们应该可以选择退出的页面。该按钮运行一个名为setEndLoop()onclick的用户定义函数。

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

    <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。设置一个名为EndLoop的嵌入式数据字段,并将其值设置为1。-在调查流程面板中,选择添加元素。然后输入名称EndLoop。-然后选择设置值并将其设置为1。-确保这是在循环之前,然后在调查流程中合并块。

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

  2. 现在问“您想问更多问题吗?”在添加JavaScript区域中添加以下代码。

    • javascript区域可以通过单击屏幕左侧问题编号下的高级选项按钮找到。选择“添加JavaScript ...”
      • 已经有一些代码了……看起来应该像这样:
    • Qualtrics.SurveyEngine.addOnload(function(){

    / 将您的Java脚本放在此行下方

  3. /

    });

  • 基本上,我使用事件跟踪将嵌入的数据字段EndLoop更新为与选择答案相关联的数值。在这种情况下,答案“是”的值为1,因为它是第一个选项,而答案为“否”的值2是因为它是第二个选项。如果选择“否”,则将嵌入式数据字段EndLoop设置为值2。这意味着将不显示任何问题,因为它们具有显示逻辑以确保仅在EndLoop字段为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);
            }
        }
    }
});

3
投票

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

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


0
投票

2020年2月更新以前的答案。我需要更改一行代码-

更改“ var choiceNum = element.id;”到

var choiceNum = element.id.split('〜')[2];

© www.soinside.com 2019 - 2024. All rights reserved.