Использование 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();
        }
    });
});
Другие вопросы по тегам