质量总和必须总计100

时间:2015-03-03 07:34:57

标签: javascript api qualtrics

这是我尝试的代码,并且它可以正常工作并排问题。我的要求是在一个地方有5列,一列必须总共100,质量不能在并排问题中给出总数100的验证。

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

还有其他办法吗?

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并且知道为什么会这样或任何其他方法,这将是一个帮助。

1 个答案:

答案 0 :(得分: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";
    }   
});

所以在Matrix问题中,最后一行是Total。在此示例中,第三个输入列(c6)是总计的列,必须添加到100.前两个输入列(c4和c5)的总计被隐藏。总数是一个只读字段,因此被访者无法改变它。唯一要做的是添加Qualtrics Custom Validation规则,因此总数必须等于100.

对我而言,这似乎是一个更好的解决方案,原因如下:受访者可以立即获得总体反馈;它就像一个Qualtrics Constant Sum问题;它是自包含在问题中(它可以与页面上的其他问题共存);没有必要弄乱下一个按钮。

See example in Qualtrics Survey