2017-03-13 4 views
1

Gibt es eine Möglichkeit, die Qualtrics JavaScript-API zu verwenden (oder, falls nicht, eine Abhilfe) programmatisch klar hierbei alle Radio-Buttons auf einer Seite Eingaben?Deaktivieren Sie ein Optionsfeld in Qualtrics

Mein Anwendungsfall ist in einer Matrixtabelle Frage, dass „pipes“ (tatsächlich nutzt eingebettete Daten) Werte aus der vorherige Frage setzt die Aussagen berechnete Zahlen in. Wenn der Befragte jedoch zurück navigiert, haben sich die Zahlen bei der Rückkehr zur folgenden Frage geändert, aber die Antworten sind geblieben. Wenn also ein Befragter zum zweiten Mal eine so aufgebaute Seite ansieht, möchte ich alle vorherigen Antworten löschen.

Ich möchte sicherstellen, dass die Daten von Qualtrics ordnungsgemäß aktualisiert werden.

Meine Umfrage verwendet derzeit die JFE-Engine, wenn dies einen Unterschied macht.

+1

Ja, es gibt einen Weg mit JavaScript, aber mit JFE ist es ziemlich kompliziert. Es ist ziemlich einfach in SE (Sie müssen es für beide tun, denn während Sie nur SE erzwingen können, können Sie JFE nur nicht erzwingen). Eine viel einfachere Lösung wäre, die Previous-Taste auf der nächsten Seite zu verstecken. –

Antwort

-1
Qualtrics.SurveyEngine.addOnload(function() { 
    var QID = this.questionId; 
    var that = this; 
    var counts = []; 
    var radioButtonsClean = []; 
    var radioButtons = $(QID).getElementsByTagName('input'); 
    var radioIndex = []; 

    for(var i=0; i<radioButtons.length; i++) { 
     if(radioButtons[i].type == 'radio') { 
      radioButtonsClean.push(radioButtons[i]); 
      radioIndex.push(radioButtons[i].id); 
     } 
    } 

    // Set counts for each displayed radio button to 0 
    for(var i=0; i<radioButtonsClean.length; i++) { 
     counts[i] = 0; 
    } 

    this.questionclick = function(event,element){ 
     if (element.type == 'radio') { 
      var thisId = element.id; 
      var spotCheck = radioIndex.indexOf(thisId); 
      var count = counts[spotCheck]; 

      if (count == 0) { 
       for(var i=0; i<counts.length; i++) { 
        counts[i] = 0; 
       } 

       counts[spotCheck] = 1; 
      } 
      else { 
       this.setChoiceValue(element.id.split('~')[2], element.id.split('~')[3], false); 
       counts[spotCheck] = 0; 
      } 
     } 
    } 
}); 
+0

Bitte korrigieren Sie die Formatierung des Codebeispiels. Können Sie Ihrem Code eine Erklärung hinzufügen? – Zac

Verwandte Themen