0

我在 Qualtrics 中遇到了一些问题,这些问题在单个问题中很容易,但在使用矩阵表或并排时变得不可能。

1) Matrix Table中单个字段的内容验证- Matrix表中的货币,您只能检查多个字段的验证并生成单个错误。

2) 基于矩阵表该行中前一个字段中的条目的字段的必需响应

3)在矩阵表中重新编码文本条目的值 - 在矩阵表中似乎没有办法做到这一点。同样,处理一个问题非常简单。

基本上,如果用户愿意,我希望用户只能完成矩阵表的单行,但是对于他们完成的行,我需要验证特定字段并要求对特定字段做出响应,并且可能重新编码他们的文本条目。

有没有一种简单的方法可以用 Javascript 来代替?

谢谢...

4

1 回答 1

0

我的猜测是 JavaScript 会处理它。我不得不编写几个脚本,因为 Qualtrics 中的验证功能是有限的,至少可以这么说。

根据您的 Qualtrics 验证选项的设置方式,您可能必须使用 Qualtrics 的 JavaScript 中的函数。以下是您将使用的基本结构。对您的 Qualtrics 问题 ID 并不了解,我使用了占位符。


更新:我建议使用并排问题类型。这是 问题/调查的链接

为了让您开始,这里是第一个学生的代码。您需要为 2-5 名学生复制相同的模式。您可以通过多种方式使用验证样式(内嵌消息、弹出窗口),我什至没有去过那里。您可以在两个电子邮件列的内容验证下的 Qualtrics 中选择电子邮件验证。您也可以选择电话号码验证。这里的验证只会阻止用户进入下一页,直到他们满足所有条件。您可以在问题正文中解释验证标准。

我使用的问题 ID 首先列出,并且与屏幕截图中项目的位置完全对应,除了 Y/N 问题,它与并排问题不同,ID 为 QR~QID9#5~1 ~1 表示是,QR~QID9#5~1~2 表示否。我不知道您对 Firebug 的技能是什么,但您需要找到与您的特定问题相关的 ID,并用它们替换下面的 ID。

我还建议使用嵌入式数据变量来提供答案,以便您在下载中获得清晰易读的数据。据我记得,Qualtrics 矩阵和并排数据的结构不是很实用。

希望这对您有意义。如果没有,请问。我从个人经验中知道找到对 Qualtrics 的 javascript 支持是多么令人沮丧。

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
    }

}
});
于 2013-02-27T23:23:31.240 回答