Использование 3 КЛАВИШИ для ответа на опрос в Qualtrics
Я использую Jscript, чтобы включить нажатия клавиш в Qualtrics, чтобы ответить на вопрос.
Он работает так же, как и в случае с двумя вариантами, представленными в примере Qualtrics: https://www.qualtrics.com/university/researchsuite/developer-tools/custom-programming/example-code-snippets/
Я добавил третий вариант нажатия клавиши (нажмите 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();
}
});
});
});
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();
}
});
});