0

これは私が試したコードであり、サイドバイサイドの質問に対しては正常に機能しています。私の要件は、1 つの場所に 5 列で、1 つの列の合計が 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;
    }

}


});

したがって、クアルトリクスを知っていて、なぜこれを行うのか、または他の方法を知っている人がいれば、これは助けになるでしょう.

4

1 に答える 1

0

更新された回答: 元の回答で述べたように、Matrix Text Input の質問を使用できます。それで、私はそれを試してみて、このスクリプトを思いつきました:

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";
    }   
});

したがって、マトリックスの質問では、最後の行は合計です。この例では、3 番目の入力列 (c6) が合計され、100 になる必要があります。最初の 2 つの入力列 (c4 と c5) の合計は非表示になっています。合計は読み取り専用フィールドであるため、回答者は変更できません。あとは、Qualtrics カスタム検証ルールを追加して、合計が 100 になるようにするだけです。

私には、これがいくつかの理由でより良い解決策のように思えます。Qualtrics の定和質問のように機能します。質問に含まれています(ページ上の他の質問と共存できます)。次のボタンをいじる必要はありません。

Qualtrics アンケートの例を参照してください

于 2015-03-03T21:11:11.580 に答える