使用3个KEYSTROKES来回答Qualtrics中的调查

时间:2016-03-31 02:00:46

标签: jscript keystroke qualtrics keystrokes

我使用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();
  }
});


});
});

1 个答案:

答案 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();
        }
    });
});