2015-03-03 40 views
0

這是我試圖代碼,它是由側問題工作正常爲側。我的要求是在一個地方5列,一列必須總共100個,資格沒有給出共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,並知道爲什麼這樣做或任何其他方法,這將是一個幫助。

+0

請創建jsfiddle – GibboK 2015-03-03 07:45:20

回答

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常量和問題一樣工作;它是完全包含在問題中的(它可以與頁面上的其他問題共存);沒有必要弄亂下一個按鈕。

See example in Qualtrics Survey