Qualtrics Javascript问题 - 矩阵表

时间:2013-02-25 17:44:58

标签: javascript qualtrics

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

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

2)基于Matrix表格行中前一个字段中的条目的字段的必需响应

3)重新编码矩阵表中文本条目的值 - 矩阵表中似乎没有这种方法。再说一次,单个问题就很简单了。

基本上,我希望用户能够只在他们想要的情况下完成矩阵表的一行,但对于他们完成的行,我需要验证特定字段并要求特定字段的响应,并且可能重新编码他们的文本条目。

使用Javascript有一种简单的方法吗?

...谢谢

1 个答案:

答案 0 :(得分:0)

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

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


更新:我建议使用并排问题类型。 这是一个 link to the question/survey

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

我使用的问题ID首先列出,并且与屏幕截图中项目的位置完全对应,但是对于并排问题不同的Y / N问题并且具有id QR~QID9# 5~1~1表示是和QR~QID9#5~1~2表示否。我不知道你对Firebug有什么技巧,但是你需要找到与你的具体问题相关的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
    }

}
});