在我的Qualtrics调查中,我有一个免费回复(文本框)问题。我想将这个问题的回答转换为javascript,这样我就可以做一些复杂的文本处理并将结果发布到外部页面。
看起来官方的Qualtrics方法是使用管道文本代码:
var answer = "${q://QID1/ChoiceTextEntryValue}"
但这会生成javascript代码,并在代码中插入文字响应。如果调查对象在其回复中加上引号,则会破坏代码。我还验证了它可以用来注入任意的javascript!
有没有办法安全地将用户生成的值分配给变量?
我尝试了什么:
答案 0 :(得分:0)
我参加聚会有点晚了,但是通过关注 this support ticket,我能够得到这样的问题回复文本:
Qualtrics.SurveyEngine.addOnPageSubmit(function()
{
/* Get current question ID (e.g. 'QID10') */
var qid_str = this.questionId;
/* console log to check what ID was capture (you can comment this line)*/
console.log('Question is: QR~' + qid_01_str)
// Save the current question's response value QR~QID247~TEXT
var responseTextField = document.getElementById('QR~' + qid_str);
var currentResponse = responseTextField.value;
/* console log to see what was captured (you can comment this line too)*/
console.log('response text is: ' + currentResponse)
});
这解决了我自己在管道文本破坏事物中使用双引号的问题。希望它可以帮助像我这样也有这个问题的其他考古学家!
答案 1 :(得分:0)
又晚了一点 - 也许您已经继续前进或找到了解决方案?您能否确认您正在谈论在 Javascript 中操作文本字符串(无论是来自调查中的文本框还是通过联系人列表上传导入)?如果是这样,我刚刚在 How To Work with Strings in JavaScript 中找到了一些很好的信息,其中谈到使用反勾号而不是单引号或双引号来封装管道文本。这样就允许按字面意义使用/记录字符串,并考虑字符串中的撇号和双引号。
所以而不是:var answer = "${q://QID1/ChoiceTextEntryValue}"
你用反引号替换双引号。因为这里的代码工具使用反引号,所以我不能在这里发布它!