Qualtrics:使用 space 栏继续,如果在按下 space 栏之前未回答项目,则研究下一个项目的自动推进
Qualtrics: using space bar to continue, study autoadvancing on next item if item left unanswered before space bar press
我是 JavaScript 的新手,我目前正在尝试向我的 Qualtrics 调查添加自定义代码,以便按下 space 栏继续 "Text/Graphic"题型。我有一个应该可以工作的代码;但是,我收到 "Unexpected token (" 错误。
代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
document.addEventListener("keydown", function(e) {
if (e.keyCode === 32) {
function(){
that.clickNextButton();
}
}
}
});`
几年前我还找到了一个类似问题的答案:
这是一个有效的简化版本(已更新以隐藏 NextButton):
Qualtrics.SurveyEngine.addOnload(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 13) $('NextButton').click();
});
});
但是,此代码在我的调查中根本不起作用(就好像它根本不存在一样)。
非常感谢任何帮助,提前致谢!
____编辑_____
我现在使用的代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page loads*/
});
Qualtrics.SurveyEngine.addOnReady(function()
{
/*Place your JavaScript here to run when the page is fully displayed*/
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 32) $('NextButton').click();
});
});
});
Qualtrics.SurveyEngine.addOnUnload(function()
{
/*Place your JavaScript here to run when the page is unloaded*/
});
我现在遇到的问题是,只要我在回答上一个问题之前按 space 栏,研究就会自动推进下一个问题。
例子
问题一:你刚才看到的这句话是不是前一句的合理延续?
* 参与者在回答问题前按 space 键,F 表示否,J 表示是
* 研究提醒参与者他们需要回答问题才能继续下一个问题
* 参与者回答了问题,研究自动进入下一个问题,因为回答验证了问题
--> 该研究只让参与者看到下一个项目一秒钟,然后在参与者不按任何键的情况下自动前进到下一个项目。
我用于 F + J 键的代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 74: // 'f' was pressed
choiceID = 2;
break;
case 70: // 'j' was pressed
choiceID = 1;
break;
}
if (choiceID) {
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
that.clickNextButton();
}
});
});
您需要删除 that.clicknextbutton()
周围的 function()
,并将 that
更改为 this
。 that
没有意义,除非它是设置为 this
关键字的变量。 function(){}
语法用于在参数中定义表达式。
Qualtrics.SurveyEngine.addOnload(function(){
document.addEventListener("keydown", function(e) {
if (e.keyCode === 32) {
this.clickNextButton();
}
});
});
我认为由于时间问题,它不起作用。改为使用 addOnReady:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 32) $('NextButton').click();
});
});
注意:使用分屏预览模式,您必须先单击 window,否则它不会识别按键。
编辑:
我无法重现您的问题(当我尝试时,您的代码对我来说是有效的)。但是,请尝试以下操作。它更清洁和一致。如果有效,请务必接受答案。
Space 吧台问题:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
if($('PreviousButton')) $('PreviousButton').hide();
var evt = document.on('keydown', function(e) {
if (e.which == 32) { //space bar pressed
evt.stop();
$('NextButton').click();
}
});
});
Yes/No 问题:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
if($('PreviousButton')) $('PreviousButton').hide();
var that = this;
var evt = document.on('keydown', function(e) {
var choiceID = null;
if(e.which == 70) choiceID = 1; //'f' was pressed
else if(e.which == 74) choiceID = 2; //'j' was pressed
if (choiceID) {
evt.stop();
that.setChoiceValue(choiceID, true);
$('NextButton').click();
}
});
});
我是 JavaScript 的新手,我目前正在尝试向我的 Qualtrics 调查添加自定义代码,以便按下 space 栏继续 "Text/Graphic"题型。我有一个应该可以工作的代码;但是,我收到 "Unexpected token (" 错误。
代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
document.addEventListener("keydown", function(e) {
if (e.keyCode === 32) {
function(){
that.clickNextButton();
}
}
}
});`
几年前我还找到了一个类似问题的答案:
这是一个有效的简化版本(已更新以隐藏 NextButton):
Qualtrics.SurveyEngine.addOnload(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 13) $('NextButton').click();
});
});
但是,此代码在我的调查中根本不起作用(就好像它根本不存在一样)。
非常感谢任何帮助,提前致谢!
____编辑_____
我现在使用的代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page loads*/
});
Qualtrics.SurveyEngine.addOnReady(function()
{
/*Place your JavaScript here to run when the page is fully displayed*/
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 32) $('NextButton').click();
});
});
});
Qualtrics.SurveyEngine.addOnUnload(function()
{
/*Place your JavaScript here to run when the page is unloaded*/
});
我现在遇到的问题是,只要我在回答上一个问题之前按 space 栏,研究就会自动推进下一个问题。
例子
问题一:你刚才看到的这句话是不是前一句的合理延续?
* 参与者在回答问题前按 space 键,F 表示否,J 表示是
* 研究提醒参与者他们需要回答问题才能继续下一个问题
* 参与者回答了问题,研究自动进入下一个问题,因为回答验证了问题
--> 该研究只让参与者看到下一个项目一秒钟,然后在参与者不按任何键的情况下自动前进到下一个项目。
我用于 F + J 键的代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 74: // 'f' was pressed
choiceID = 2;
break;
case 70: // 'j' was pressed
choiceID = 1;
break;
}
if (choiceID) {
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
that.clickNextButton();
}
});
});
您需要删除 that.clicknextbutton()
周围的 function()
,并将 that
更改为 this
。 that
没有意义,除非它是设置为 this
关键字的变量。 function(){}
语法用于在参数中定义表达式。
Qualtrics.SurveyEngine.addOnload(function(){
document.addEventListener("keydown", function(e) {
if (e.keyCode === 32) {
this.clickNextButton();
}
});
});
我认为由于时间问题,它不起作用。改为使用 addOnReady:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 32) $('NextButton').click();
});
});
注意:使用分屏预览模式,您必须先单击 window,否则它不会识别按键。
编辑:
我无法重现您的问题(当我尝试时,您的代码对我来说是有效的)。但是,请尝试以下操作。它更清洁和一致。如果有效,请务必接受答案。
Space 吧台问题:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
if($('PreviousButton')) $('PreviousButton').hide();
var evt = document.on('keydown', function(e) {
if (e.which == 32) { //space bar pressed
evt.stop();
$('NextButton').click();
}
});
});
Yes/No 问题:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
if($('PreviousButton')) $('PreviousButton').hide();
var that = this;
var evt = document.on('keydown', function(e) {
var choiceID = null;
if(e.which == 70) choiceID = 1; //'f' was pressed
else if(e.which == 74) choiceID = 2; //'j' was pressed
if (choiceID) {
evt.stop();
that.setChoiceValue(choiceID, true);
$('NextButton').click();
}
});
});