这是我尝试的代码,并且它可以正常工作并排问题。我的要求是在一个地方有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并且知道为什么会这样或任何其他方法,这将是一个帮助。
答案 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问题;它是自包含在问题中(它可以与页面上的其他问题共存);没有必要弄乱下一个按钮。