0

这是我尝试过的代码,它可以很好地解决并排问题。我的要求是在一个地方有 5 列,并且一列必须总计 100,qualtrics 不会在并排问题中给出必须总计 100 的验证。

步骤: 1)隐藏下一个按钮 2)添加下一个按钮2并单击事件。

还有其他方法可以做到这一点吗?

Qualtrics.SurveyEngine.addOnload(function()
{

document.getElementById("NextButton").style.display = "none";

ButtonHTML = document.getElementById("Buttons").innerHTML;
ButtonHTML = ButtonHTML + "<input aria-label='Next' id='NextButton2'   class='NextButton Button' title='Next' name='NextButton2' value='  >>  ' data-runtime-disabled='runtime.Disabled' data-runtime-aria-label='runtime.ariaLabel' role='button' page-id='P_1425294269078' type='submit'>";

document.getElementById("Buttons").innerHTML = ButtonHTML;

document.getElementById("NextButton2").addEventListener("click", function(){
if(ColumnTotal()) {
  document.getElementById("NextButton").click();
}
});


  function ColumnTotal() {


    var txtFirstNumberValue = document.getElementById('QR~QID190#2~1~1~TEXT').value;
    var txtSecondNumberValue = document.getElementById('QR~QID190#2~2~1~TEXT').value;
    var txtThirdNumberValue = document.getElementById('QR~QID190#2~3~1~TEXT').value;
    var txtFourNumberValue = document.getElementById('QR~QID190#2~4~1~TEXT').value;
    var txtFiveNumberValue = document.getElementById('QR~QID190#2~5~1~TEXT').value;

    if(isNaN(txtFirstNumberValue)) {
      txtFirstNumberValue = 0;
    }

    if(isNaN(txtSecondNumberValue)) {
      txtSecondNumberValue = 0;
    }

    if(isNaN(txtThirdNumberValue)) {
      txtThirdNumberValue = 0;
    }

    if(isNaN(txtFourNumberValue)) {
      txtFourNumberValue = 0;
    }

    if(isNaN(txtFiveNumberValue)) {
      txtFiveNumberValue = 0;
    }

    var result = parseInt(txtFirstNumberValue) + parseInt(txtSecondNumberValue)+ parseInt(txtThirdNumberValue)+ parseInt(txtFourNumberValue)+ parseInt(txtFiveNumberValue);

    if(result != 100) {
        alert("Please total the choices to 100.");
        return false;
    }
    else {
        return true;
    }

}


});

因此,如果有人知道 Qualtrics 并知道它为什么这样做或任何其他方法,这将是一个帮助。

4

1 回答 1

0

更新答案:正如我在原始答案中所说,您可以使用矩阵文本输入问题。所以,我试了一下,想出了这个脚本:

Qualtrics.SurveyEngine.addOnload(function() {
    var qid = this.questionId;
    $(qid).select('td.c4').last().down().hide();
    $(qid).select('td.c5').last().down().hide();
    var totalInput = $(qid).select('td.c6').last().down();
    totalInput.setAttribute("readonly", "readonly");
    totalInput.style.fontWeight = "bold";
    var c6 = $(qid).select('td.c6');
    for(var i=0; i < (c6.length - 1); i++) {
        c6[i].down().observe("keyup", function(event) {
            sumCol();
        }); 
    }   
    sumCol();   

    function sumCol() {
        var total = 0;
        for(var i=0; i < (c6.length - 1); i++) {
            var inputValue = parseInt(c6[i].down().value);
            if(isNaN(inputValue)) inputValue = 0;
            c6[i].down().value = inputValue;
            total = total + inputValue;
        }
        totalInput.value = total;
        if(total == 100) totalInput.style.color = "";
        else totalInput.style.color = "red";
    }   
});

所以在矩阵问题中,最后一行是总计。在此示例中,第三个输入列 (c6) 是总计且必须加到 100 的输入列。前两个输入列(c4 和 c5)的总计是隐藏的。总计是一个只读字段,因此受访者无法更改它。唯一要做的事情是添加一个 Qualtrics 自定义验证规则,因此总数必须等于 100。

对我来说,这似乎是一个更好的解决方案,原因如下:受访者可以立即获得关于总数的反馈;它的工作原理类似于 Qualtrics 常量和问题;它是自包含的问题(它可以与页面上的其他问题共存);没有必要弄乱下一个按钮。

请参阅 Qualtrics 调查中的示例

于 2015-03-03T21:11:11.580 回答