0 votes
in SoSci Survey (dt.) by s109993 (9.9k points)
edited by s109993

Ich habe versucht, zwei Upload Felder zu programmieren. Das zweite soll erst erscheinen wenn bei dem ersten ein File hochgeladen wurde.
Grundlage war die letzte Frage hier: https://support.soscisurvey.de/?qa=34882/mehrfachauswahl-upload-funktion#c34998

Mein Ansatz ist der folgende (beide Upload Fragen im Fragebogen platziert, darunter das html Feld). Ich bin mir nicht sicher wo der Fehler liegen könnte. Ansätze und Ideen sind gerne gesehen. Grundlage der Programmierung war folgende Vorlage: https://www.soscisurvey.de/help/doku.php/de:create:dynamic

<script type="text/javascript">
<!--
var optionA = document.getElementById("A005");  // 
var optionB = document.getElementById("A006");  // 

 
function toogle() {

  if (optionA.change) {
    optionB.style.display = "";
  } else {
optionB.style.display = "none";
}

  }

 

 
// Und jetzt gleich soll sie auch ausgeführt werden, damit die Anzeige zu Beginn korrekt ist
// (z.B. ausblenden der Texteingabe zu Beginn)

SoSciTools.attachEvent(optionA, "change", toogle);
SoSciTools.attachEvent(optionB, "change", toogle);


toogle();
// -->
</script>

Edit: es sieht so aus, als würde die else Schlaufe funktionieren, Das Problem liegt also wahrscheinlich im if- Bereich.

1 Answer

0 votes
by SoSci Survey (303k points)
selected by s109993
 
Best answer

Im Moment lauschen Sie auf ein "change" Event bei dem DIV-Element, welches das Auswahlfeld für den Dateiupload umgibt. Horchen Sie stattdessen auf das Element für die Dateiauswahl:

var optionA = document.getElementById("A005");
by s109993 (9.9k points)
Das macht Sinn, danke. Ich war mir unschlüssig, welche ID hier relevant ist.
Der Code funktioniert leider immer noch nicht- hab ich noch einen anderen Schnitzer?
Ich habe den Code in der Frage angepasst.
by SoSci Survey (303k points)
Posten Sie gerne mal einen Pretest-Link direkt zu der Seite mit Ihren Upload-Fragen.
by SoSci Survey (303k points)
Auf die Anbindung des Events hatte ich nicht richtig geachtet.

Korrekt ist:

optionA.addEventListener("change", toogle);

Und darüber (!) in der Definition der Funktion toogle() müssten Sie optionA.value prüfen, nicht optionA.change (das gibt es nicht)

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...