以下是如何获取滑块的响应值并将其保存在嵌入式数据字段中,该字段的名称根据问题 ID 编号。这种方式只有在滑块的文本输入框可见时才有效。也可能有一种方法可以做到这一点,也许其他人可以将其添加到答案中。
Qualtrics.SurveyEngine.addOnload(function()
{
// everything here runs when the page is loaded. So, we can get the Question ID here,
// but we can't get the response value until later.
var currentQuestionID = this.getQuestionInfo().QuestionID
//var resultEmbeddedName = currentQuestionID + "_result" //e.g. QID6_result
var resultEmbeddedName = "result_" + currentQuestionID.substring(3) //e.g. result_6
$('NextButton').onclick = function (event) {
// everything in here will run when you click the next button
// note that it has access to javascript variables from the enclosing function
// however, if you declare something in here with "var" then it will be a LOCAL variable
// the following alert will appear when you click the next button. For me, it appears twice;
// I'm not sure why.
// Save the current question's response value
var responseTextField = document.getElementById(currentQuestionID + '~1~result')
var currentResponse = responseTextField.value
alert("Result: " + currentResponse + "\nwill be available to future questions as: \n$" + "{e://Field/" + resultEmbeddedName + "}")
Qualtrics.SurveyEngine.setEmbeddedData(resultEmbeddedName, currentResponse)
// and now run the event that the normal next button is supposed to do
Qualtrics.SurveyEngine.navClick(event, 'NextButton')
}
});
对于多项选择项目,它有点复杂。这是有效的代码,有很多评论和演示。请注意,变量“currentResponse”最终保存了所选选项的 NUMBER,而“currentChoiceText”最终保存了该选项的文本标签(例如是或否),因此您可以保存您喜欢的任何一个。
Qualtrics.SurveyEngine.addOnload(function()
{
// everything here runs when the page is loaded. So, we can get the Question ID here,
// but we can't get the response value until later.
var currentQuestionID = this.getQuestionInfo().QuestionID
console.log("Current Question ID is: " + currentQuestionID)
//var resultEmbeddedName = currentQuestionID + "_result" //e.g. QID6_result
var resultEmbeddedName = "result_" + currentQuestionID.substring(3) //e.g. result_6
$('NextButton').onclick = function (event) {
// everything in here will run when you click the next button
// note that it has access to javascript variables from the enclosing function
// however, if you declare something in here with "var" then it will be a LOCAL variable
// the following alerts will appear when you click the next button. For me, it appears twice;
// I'm not sure why.
// Save the current question's response value
var questionObject = Qualtrics.SurveyEngine.getInstance(currentQuestionID)
var currentResponse = questionObject.getSelectedChoices()[0] //in case more than one is selected, it will only work here to take one!
var theQuestionInfo=questionObject.getQuestionInfo()
var choicesObject=theQuestionInfo.Choices
var thisChoiceObject=choicesObject[currentResponse]
var currentChoiceText=thisChoiceObject.Text
console.log("Number of the current choice is " + currentResponse)
console.log("Text of the current choice is " + currentChoiceText)
alert("Result: " + currentChoiceText + "\nwill be available to future questions as: \n$" + "{e://Field/" + resultEmbeddedName + "}")
Qualtrics.SurveyEngine.setEmbeddedData(resultEmbeddedName, currentChoiceText)
// and now run the event that the normal next button is supposed to do
Qualtrics.SurveyEngine.navClick(event, 'NextButton')
}
});
这两个都动态引用问题 ID,因此如果您将问题复制到新问题,它们将单独工作。无需更改任何 javascript 代码。
要测试这些,请制作一个滑块问题或一个多项选择问题并添加相应的 javascript。然后,在分页符后制作另一张幻灯片(分页符是出现“下一步”按钮所必需的)。在该幻灯片中,放置一个管道文本字段,例如 ${e://Field/result_1} 或警报对话框告诉您保存的值将是什么。预览调查时,您应该会在第二个问题的管道文本字段中看到在第一个问题上输入的值。
就本演示而言,您当然可以仅使用管道文本实现相同的效果。但是,如果您出于某种原因希望问题实际上立即将其响应保存到嵌入式数据中,这将为您做到这一点。
此外,如果您需要知道在单击下一步按钮时如何运行代码,这可以适应任何一般需要。