我使用Jscript启用Qualtrics中的Keystrokes来回答问题。
它与Qualtrics的示例中提供的2个选项一样:https://www.qualtrics.com/university/researchsuite/developer-tools/custom-programming/example-code-snippets/#ExampleJavaScript
我添加了第三个按键选项(按q),它不起作用:不知何故,q的按键被注册,但它既没有输入数据,也没有像按下j或k那样继续下一个问题。见下面的代码。任何建议表示赞赏 - 谢谢!
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place Your Javascript Below This Line*/
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 74: // 'j' was pressed
choiceID = 1;
break;
case 75: // 'k' was pressed
choiceID = 2;
break;
case 81: // 'q' was pressed
choiceID = 5;
break;
}
if (choiceID) {
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
that.clickNextButton();
}
});
});
});
答案 0 :(得分:1)
我不确定到底出了什么问题。它可能是一些不同的东西:
1)上面的代码有额外的});在末尾。但是,Qualtrics不会让你保存,所以我认为这只是你帖子中的错字。
2)如果您的choiceID错误且您已启用强制响应,则它不会前进,您将收到错误消息。
3)如果您处于JFE预览模式,那么在任何按键操作起作用之前,您必须首先关注表单。
顺便说一下,这不适用于移动设备。以下是一些清理过的代码,它们也解决了问题(3):
Qualtrics.SurveyEngine.addOnload(function()
{
$('Buttons').hide();
if(window.location.pathname.match(/^\/jfe[0-9]?\/preview/)) {
$(this.questionId).select('input').first().focus();
}
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 74: // 'j' was pressed
choiceID = 1;
break;
case 75: // 'k' was pressed
choiceID = 2;
break;
case 81: // 'q' was pressed
choiceID = 5;
break;
}
if (choiceID) {
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
$('NextButton').click();
}
});
});