Qualtrics中setChoiceValue失效,求无需嵌入式数据的单选按钮模拟方案
自答(2018年1月30日更新)
折腾了好一阵子,我自己测试出了可行的方案,跟大家分享一下:
脚本用addOnload或者addOnReady都能正常运行,但有时候会碰到Qualtrics的问题选项标识符不符合预期的情况。我试过把问题改成描述文本类型再改回多选题(相当于重建默认选项),但不一定能修复这个问题,最后是重新创建新块和新问题才解决的。
附上修改后的可用脚本(替换掉了失效的setChoiceValue,改成直接模拟用户点击):
Qualtrics.SurveyEngine.addOnload(function() { this.hideNextButton(); this.hidePreviousButton(); var that = this; Event.observe(document, 'keydown', function keydownCallback(e) { var choiceElement = null; switch (e.keyCode) { case 74: // 按下'j'键选中选项1 choiceElement = document.querySelector('#QR\\~' + that.questionId + '\\~1'); break; case 75: // 按下'k'键选中选项2 choiceElement = document.querySelector('#QR\\~' + that.questionId + '\\~2'); break; } if (choiceElement) { Event.stopObserving(document, 'keydown', keydownCallback); // 直接模拟点击选项元素 choiceElement.click(); that.clickNextButton(); } }); });
关键改动说明:
- 不再调用失效的
setChoiceValue,而是通过DOM选择器直接定位到对应的选项元素,调用原生的click()方法模拟用户点击 - 选择器里的
#QR\\~是Qualtrics选项元素的固定前缀,后面拼接当前问题ID和选项编号,注意要转义波浪线~(因为它在CSS选择器里有特殊含义) - 这样操作不仅能看到单选按钮的点击动画,Qualtrics也能正常捕获到选择数据,完美解决了之前的两个痛点:数据不记录、loop-and-merge环境下无法匹配的问题
内容的提问来源于stack exchange,提问作者user1113568
相关产品推荐
相关产品推荐

