单击下一个按钮后评估质量条件

时间:2016-01-25 02:21:04

标签: javascript api qualtrics

我希望有人可能会对我在Qualtrics遇到的问题提供一些见解。简单地说,我希望Qualtrics评估数字字段的内容(即医疗记录编号,取五个正确的字符,然后将它与一组随机数进行比较,如果它在列表中,则返回值1,如果是,则返回0它不在列表中)。看起来它应该很简单,但是因为Qualtrics不支持Javascript的使用,当我准备的代码不起作用时,我没有人可以调用它...然后我在StackOverflow上找到了你的帖子并且想到了我问。

我的答案基于In Qualtrics Surveys, how can you save the response to an item into embedded data when the next button is clicked?

找到的解决方案

这是一年了,我认为我的解决方案可能失败了,因为Qualtrics使用的实现不再支持这个了。谁知道呢。

我创建了一个简化版本:

Qualtrics.SurveyEngine.addOnload(function()
{var currentQuestionID = this.getQuestionInfo().QuestionID;
    var resultEmbeddedName = "MRN_RND";
    $('NextButton').onclick = function (event) {
        var responseTextField = document.getElementById(currentQuestionID);
        var randomizercheck = responseTextField.value;
        Qualtrics.SurveyEngine.setEmbeddedData(resultEmbeddedName, randomizercheck);
        Qualtrics.SurveyEngine.navClick(event, 'NextButton');
};
});

我以为我会从一些简单的东西开始,一旦我确定它有效,我就可以让它更复杂。甚至不能让这个工作,所以我不能调整它来做我需要的。再一次,这只是我希望解决方案的途径,但我正在尝试逐步解决问题,以便我能够理解我出错的地方。

2 个答案:

答案 0 :(得分:1)

主要问题是responseTextField不是输入字段。此外,我认为您可能希望在文本输入更改时触发事件,而不是在单击“下一步”按钮时触发事件。试试这个:

Qualtrics.SurveyEngine.addOnload(function()
{
    var currentQuestionID = this.questionId;
    var resultEmbeddedName = "MRN_RND";
    var responseTextField = $(currentQuestionID).select('input.InputText').first();
    responseTextField.observe("keyup", function (event) {
        var randomizercheck = responseTextField.value;
        Qualtrics.SurveyEngine.setEmbeddedData(resultEmbeddedName, randomizercheck);
    };
});

注意:在使用文本输入问题执行块之前,必须在测量流程中定义嵌入变量MRN_RND。

答案 1 :(得分:0)

这是一个黑客,而不是最好的解决方案。尝试更换:

var currentQuestionID = this.getQuestionInfo().QuestionID;

使用:

var currentQuestionID = Object.keys(Qualtrics.SurveyEngine.QuestionInfo)[0];

假设您在页面中没有多个问题。