0

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


});
});
4

1 回答 1

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();
        }
    });
});
于 2016-03-31T15:29:29.250 回答