Bevor ich einen neuen Kommentar schreibe würde ich die Ausgangsfrage gerne wie folgt abändern, da diese von mir ungenau gestellt wurde und um die Strukturen im Fragebogen besser abzubilden. Nicht Elemente 2 und 3 sollen ausgeblendet werden, sondern abhängig von den Antworten in diesen Elementen soll ggf. Element 4 ausgeblendet werden. Vielen Dank für eure Geduld und die bisherige Unterstützung von euch. Mittlerweile habe ich auch den Knopf{} gefunden ;)
Hallo zusammen,
ich hoffe ihr könnt mir bei folgendem Problem helfen. Mein Fragebogen ist mittlerweile recht komplex. Ich möchte folgendes erreichen:
Auf Seite 1 werden die Teilnehmer nach ihren Arbeitgeber befragt (Element1).
Auf Seite zwei frage ich nach der Bezeichnung der Hierarchiestufe (Ausbildungsplätze ausgenommen), auf der sich der Teilnehmer in seinem Unternehmen befindet:
Die mir bekannte Stufen einiger Unternehmen habe ich bereits alle in einer Variable (Element 2) abgelegt und blende diese entsprechend der Angabe auf Seite 1 ein oder aus. Bei manchen Arbeitgebern kenne ich die Bezeichnungen jedoch nicht, weswegen ich dann statt der Dropdown Auswahl ein Freifeld (Element 3) einblende, in das die Teilnehmer ihre Stufe eintragen können (wieder Ausbildungsplätze ausgenommen). Hierzu der PHP-Code (vereinfachte Darstellung). Der Code funktioniert fehlerfrei und soll hier dazu dienen den Fragebogenverlauf und dessen Struktur deutlich zu machen:
if (value('Element1') == 1) {
question('Element2', '20-24,68');
} else if (value('Element1') == 2) {
question('Element2', '1-11,68');
} else if (value('Element1') == 96) {
question('Element2', '43-51,68');
} else if (value('Element1') == 3) {
question('Element2', '34-42,68');
} else if (value('Element1') == 4) {
question('Element2', '12-19,68');
} else if (value('Element1') == 5) {
question('Element2', '26-33,68');
} else if (value('Element1') == 6) {
question('Element2', '52-58,68');
} else {
question('Element3');
}
Element 4 auf Seite 2 stellt eine Frage zu Ausbildungsplätzen. Folglich ist die Frage für alle Teilnehmer, die zuvor (in Element 2 oder 3) angegeben haben auf einer höheren Stufe angestellt zu sein, irrelevant und soll entsprechend ausgeblendet werden.
Da sich das Element 4 auf der gleichen Seite befindet wie Element 2 oder Element 3, muss man in JavaScript einen Event Handler programmieren. Das habe ich wie folgt versucht:
var dropdown = document.getElementById("Element2");
var textfeld = document.getElementById("Element3");
var frage = document.getElementById("Element4");
function toogle() {
if ( dropdown.value != "-9" ) {
frage.style.display = "none";
} else {
frage.style.display = "";
}
}
SoSciTools.attachEvent(dropdown, "change", toogle);
SoSciTools.attachEvent(dropdown, "click", toogle);
toogle();
function toogleText() {
if (textfeld.value.replace(/\s/g, "") != "") {
frage.style.display = "none";
} else {
frage.style.display = "";
}
}
SoSciTools.attachEvent(textfeld, "keyup", toogleText);
toogleText();
Der Handler toogle() funktioniert wenn er alleine ausgeführt wird. Umgekehrt funktioniert auch toogletext() ohne toogle(). Nur in Kombination wird kein Befehl ausgeführt.
In der Console wird folgender Fehler angezeigt:
1. "Uncaught SyntaxError: Unexpected token <"
2. "check for duplicates: insertTimeout"
Fehler 1 taucht immer auf, unabhängig vom angezeigten Element (Element 2 oder 3). Der zweite Fehler taucht nur auf, wenn Element 3 sichtbar ist.
Meine Vermutung ist, dass die für die Bedingungen erforderlichen Elemente 2 und Element 3 beide gleichzeitig auf Seite 2 angezeigt werden müssen, damit javascript funktioniert und Element 4 ggf. ausblendet.
Ich bedanke mich schon mal für eure Hilfe!!!