Qualtrics Javascript问题-矩阵表
我在Qualtrics中遇到了一些问题,某些函数在一个问题中很简单,但在使用矩阵表或并排矩阵时就变得不可能了 1矩阵表中单个字段的内容验证-货币在矩阵表中,您只能检查多个字段的验证并生成单个错误 2基于矩阵表中该行上一字段中的条目的字段所需响应 3在矩阵表中重新编码文本项的值-在矩阵表中似乎没有办法做到这一点。再说一次,一个问题很简单 基本上,如果用户愿意,我希望他们能够只完成矩阵表中的一行,但是对于他们完成的行,我需要验证特定字段,并要求对特定字段做出响应,还可能重新编码他们的文本条目 有没有一种简单的方法可以用Javascript来代替呢Qualtrics Javascript问题-矩阵表,javascript,qualtrics,Javascript,Qualtrics,我在Qualtrics中遇到了一些问题,某些函数在一个问题中很简单,但在使用矩阵表或并排矩阵时就变得不可能了 1矩阵表中单个字段的内容验证-货币在矩阵表中,您只能检查多个字段的验证并生成单个错误 2基于矩阵表中该行上一字段中的条目的字段所需响应 3在矩阵表中重新编码文本项的值-在矩阵表中似乎没有办法做到这一点。再说一次,一个问题很简单 基本上,如果用户愿意,我希望他们能够只完成矩阵表中的一行,但是对于他们完成的行,我需要验证特定字段,并要求对特定字段做出响应,还可能重新编码他们的文本条目 有没有
谢谢…我想JavaScript会处理好的。至少可以说,Qualtrics中的验证功能是有限的,因此我不得不编写几个脚本 根据Qualtrics验证选项的设置方式,您可能需要使用Qualtrics JavaScript中的函数。下面是您将使用的基本结构。我对你的资格问题ID一无所知,我使用了占位符 更新:我建议使用并列问题类型。 这里有一个 为了让你开始,这里是第一个学生的代码。你需要为2-5年级的学生复制相同的模式。你可以通过验证风格的在线消息和弹出窗口来使用很多方法,我甚至都没去过。您可以在Qualtrics中为两个电子邮件列的内容验证下选择电子邮件验证。您也可以选择电话号码验证。这里的验证只会阻止用户进入下一页,直到他们满足所有标准。您可以在问题主体中解释验证标准 我使用的问题id列在第一位,与屏幕截图中项目的位置完全对应,除了Y/N问题,它与并列问题不同,id QR~QID95~1~1表示是,QR~QID95~1~2表示否。我不知道您在Firebug方面有什么技能,但您需要找到与您的具体问题相关,并用它们替换下面的问题 我还建议使用嵌入的数据变量来输入答案,以便在下载中有清晰易读的数据。根据我的记忆,Qualtrics矩阵的结构和并行数据不是很有用 希望这对你有意义。如果没有,请询问。我从个人经验中知道,找到javascript对Qualtrics的支持是多么令人沮丧
Qualtrics.SurveyEngine.addOnload(function () {
/*Place Your Javascript Below This Line*/
//QR~QID9#1~1~1~TEXT - QR~QID9#2~1~1~TEXT - QR~QID9#3~1~1~TEXT - QR~QID9#4~1~1~TEXT - QR~QID9#5~1~1/QR~QID9#5~1~2 - QR~QID9#6~1~1~TEXT
//QR~QID9#1~2~1~TEXT - QR~QID9#2~2~1~TEXT - QR~QID9#3~2~1~TEXT - QR~QID9#4~2~1~TEXT - QR~QID9#5~2~1/QR~QID9#5~2~2 - QR~QID9#6~2~1~TEXT
//QR~QID9#1~3~1~TEXT - QR~QID9#2~3~1~TEXT - QR~QID9#3~3~1~TEXT - QR~QID9#4~3~1~TEXT - QR~QID9#5~3~1/QR~QID9#5~3~2 - QR~QID9#6~3~1~TEXT
//QR~QID9#1~4~1~TEXT - QR~QID9#2~4~1~TEXT - QR~QID9#3~4~1~TEXT - QR~QID9#4~4~1~TEXT - QR~QID9#5~4~1/QR~QID9#5~4~2 - QR~QID9#6~4~1~TEXT
//QR~QID9#1~5~1~TEXT - QR~QID9#2~5~1~TEXT - QR~QID9#3~5~1~TEXT - QR~QID9#4~5~1~TEXT - QR~QID9#5~5~1/QR~QID9#5~5~2 - QR~QID9#6~5~1~TEXT
var notvalidphbook1 = 0, notvalidphbook2 = 0, notvalidphbook3 = 0, notvalidphbook4 = 0, notvalidphbook5 = 0;
var phsbooks; //gets sum of notvalidphbook items
var bookrecode1, bookrecode2, bookrecode3, bookrecode4, bookrecode5;
var notvalidemail1 = 0, notvalidemail2 = 0, notvalidemail3 = 0, notvalidemail4 = 0, notvalidemail5 = 0;
var emails; //gets sum of notvalidemail items
var validates; //validation variable that decides if user proceeds or not
Qualtrics.SurveyPage.Question.prototype.validate = function (element) {
//Student name entered
var student1y = $('QR~QID9#1~1~1~TEXT').getValue();
var student2y = $('QR~QID9#1~2~1~TEXT').getValue();
var student3y = $('QR~QID9#1~3~1~TEXT').getValue();
var student4y = $('QR~QID9#1~4~1~TEXT').getValue();
var student5y = $('QR~QID9#1~5~1~TEXT').getValue();
//Student phone number
var student1phone = $('QR~QID9#2~1~1~TEXT').getValue();
var student2phone = $('QR~QID9#2~2~1~TEXT').getValue();
var student3phone = $('QR~QID9#2~3~1~TEXT').getValue();
var student4phone = $('QR~QID9#2~4~1~TEXT').getValue();
var student5phone = $('QR~QID9#2~5~1~TEXT').getValue();
//Emails match
var student1emailA = $('QR~QID9#3~1~1~TEXT').getValue();
var student1emailB = $('QR~QID9#4~1~1~TEXT').getValue();
var student2emailA = $('QR~QID9#3~2~1~TEXT').getValue();
var student2emailB = $('QR~QID9#4~2~1~TEXT').getValue();
var student3emailA = $('QR~QID9#3~3~1~TEXT').getValue();
var student3emailB = $('QR~QID9#4~3~1~TEXT').getValue();
var student4emailA = $('QR~QID9#3~4~1~TEXT').getValue();
var student4emailB = $('QR~QID9#4~4~1~TEXT').getValue();
var student5emailA = $('QR~QID9#3~5~1~TEXT').getValue();
var student6emailB = $('QR~QID9#4~5~1~TEXT').getValue();
//Student book needs
var student1booky = $('QR~QID9#5~1~1').getValue();
var student1bookn = $('QR~QID9#5~1~2').getValue();
var student2booky = $('QR~QID9#5~2~1').getValue();
var student2bookn = $('QR~QID9#5~2~2').getValue();
var student3booky = $('QR~QID9#5~3~1').getValue();
var student3bookn = $('QR~QID9#5~3~2').getValue();
var student4booky = $('QR~QID9#5~4~1').getValue();
var student4bookn = $('QR~QID9#5~4~2').getValue();
var student5booky = $('QR~QID9#5~5~1').getValue();
var student6bookn = $('QR~QID9#5~5~2').getValue();
//Student book name
var student1bookname = $('QR~QID9#6~1~1~TEXT').getValue();
var student2bookname = $('QR~QID9#6~2~1~TEXT').getValue();
var student3bookname = $('QR~QID9#6~3~1~TEXT').getValue();
var student4bookname = $('QR~QID9#6~4~1~TEXT').getValue();
var student5bookname = $('QR~QID9#6~5~1~TEXT').getValue();
if (student1y == '') {
//alert("no name provided, no other info needed");
//"no name provided, no other info needed"
} else if (student1y != '' && (student1phone == '' || (student1emailA == '' || student1emailB == '') || (student1booky == null && student1bookn == null))) {
//alert("you need to provide a phone number and enter the student's book needs");
notvalidphbook1 = 1;
}
else if (student1y != '' && (student1phone != '' && (student1emailA != '' && student1emailB != '') && (student1booky == null && student1bookn == null))) {
notvalidphbook1 = 0;
else {
//alert("thank you for providing a phone number and specifying book needs");
if (student1booky == 'QR~QID9#5~1~1') {
bookrecode1 = 'Y';
} else {
bookrecode1 = 'N';
}
}
if (student1emailA == '' && student1emailB == '') {
//alert("no email provided, no match needed");
//"no email provided, no match needed"
} else if (student1emailA != '' && student1emailA == student1emailB) {
//alert("the emails match");
//"the emails match"
notvalidemail1 = 0;
} else {
//alert("the emails don't match");
//"the emails don't match"
notvalidemail1 = 1;
}
Qualtrics.SurveyEngine.setEmbeddedData('Student1Name', student1y);
Qualtrics.SurveyEngine.setEmbeddedData('Student1Phone', student1phone);
Qualtrics.SurveyEngine.setEmbeddedData('Student1Email', student1emailA);
Qualtrics.SurveyEngine.setEmbeddedData('Student1Txt', bookrecode1);
Qualtrics.SurveyEngine.setEmbeddedData('Student1TxtName', student1bookname);
phsbooks = notvalidphbook1 + notvalidphbook2 + notvalidphbook3 + notvalidphbook4 + notvalidphbook5;
emails = notvalidemail1 + notvalidemail2 + notvalidemail3 + notvalidemail4 + notvalidemail5;
validates = phsbooks + emails;
if (validates == 0) { //validates only if the sum is equal to zero
return true; //this let's the user continue
} else {
return false; //this prevents the user from proceeding to the next page
}
}
});
谢谢你的回复。下面是我正在使用的快照:因此,id想要做的是1使第2-5列成为必需的,但前提是填写了第1列的名称。这样,用户可以在表单中提交1-5中任意数量的学生条目,并且他们提交的条目需要第2-5列的回复。2验证电子邮件地址是否为实际电子邮件地址。3验证重新输入的电子邮件地址是否与第一个电子邮件地址匹配。4将此问题选为是/否,并将条目重新编码为“Y”或“N”。矩阵表当前使您为所有字段选择相同的字段类型。@655321,我正试图实现与您上述建议类似的逻辑,但是,尽管每次提交页面时都会执行问题的验证函数,并且验证失败,返回false,这并不妨碍我进入下一页。是否还有其他需要与上述内容结合才能实现的功能?skyork,您是否需要或要求使用任何类型的验证?如果是,则会干扰此解决方案。它使用相同的函数,并且所需或请求的Qualtrics验证优先于或覆盖您放置的任何内容:Qualtrics.SurveyPage.Question.prototype.validate=function元素{。最好不要使用问题选项中的任何类型的验证,只需在问题javascript中进行完全定制。我已经学到了艰苦的方法。@655321,在我的情况下,这一定是必需的验证。我在尝试时曾怀疑过这一点,但现在你已经确认了。不过,如果我想在jav中完成所有操作,请ascript,如何利用validate函数返回的值阻止用户转到下一个问题/页面?