0 votes
in SoSci Survey (dt.) by s081199 (160 points)
edited by s081199

Hallo (ich schon wieder),
also Königsdisziplin, aufbauend auf meine letzte Frage im Forum' "Fragen bei Auswahl einer bestimmten Option sofort Einblenden" - Skala (Extrema beschriftet)'.

Der Plan: Bei Texteingabe soll die anschließende Frage erscheinen.
Der Versuch:

 <script type="text/javascript">
<!--
var textfeld = document.getElementById("IH10_01");  // offene Texteingabe anderer Inhalt
var frage3 = document.getElementById("IH09_qst");  // Frage anderer Inhalt...kommt vor

function toogleText() {
console.log(textfeld);
console.log(textfeld.value);
if (textfeld.value.replace(/\s/, "") != "") {
    // Wurde das Textfeld ausgefüllt, dann wird die Frage angezeigt
    // Keine Angabe ("") verwendet die Standard-Einstellung (normal anzeigen)
    frage3.style.display = "";
  } else {
    // Mit der Anzeigeoption "none" wird die Frage ausgeblendet
    frage3.style.display = "none";
  }
}

// Die Funktion soll jedesmal ausgeführt werden, wenn das Textfeld ausgefüllt wird
SoSciTools.attachEvent(textfeld, "onkeyup", toogleText);

// Und jetzt gleich soll sie auch ausgeführt werden, damit die Anzeige zu Beginn korrekt ist
toogleText();
// -->
</script>

da ich zuvor nur "checked" gebraucht habe, weiß ich nicht recht was ich stattdessen angeben muss. Habe "onkeyup", "onkeydown", "onblur" versucht. Irgendwo hakt es...
Vielleicht auch weil ich bei if... und dem attachEvent... das gleiche stehen hab?

Hoffe es liegt nicht daran, dass IH09_011 schon in dem darauffolgenden JavaScript verwendet wird.

Hier mein Pretest-Link:

Danke schon mal!

1 Answer

+1 vote
by SoSci Survey (327k points)
selected by s081199
 
Best answer

Mit textfeld.onkeyup fragen Sie nur ab, welche Funktion mit dem Ereignis verknüpft wurde, dass der Teilnehmer etwas ins Textfeld eingibt und dann die Taste loslässt. Das onkeyup (edit: genauer gesagt "keyup") benötigen Sie lediglich beim SoSciTools.attachEvent() statt click, aber dort wo Sie prüfen, ob etwas im Textfeld steht, benötigen Sie die Eigenschaft value:

if (textfeld.value != "") {

Wenn Sie Leerzeichen noch ignorieren möchten, können Sie das noch ein wenig erweitern:

if (textfeld.value.replace(/\s/g, "") != "") {

Wichtig: Verwenden Sie jeden Funktionsnamen pro Fragebogen-Seite nur einmal. Sollten Sie das andere JavaScript also auf derselben Seite verwenden, dann benennen Sie toogle() in toogleText() oder ähnlich um.

by s081199 (160 points)
edited by s081199
Ich habe auf dieser Fragebogenseite mit diesem JavaScript insgesamt 10! Habe das mit toogle jetzt bei allen geändert. Danke für den Hinweis!
if Bedingung hab ich getauscht. Leider funktioniert es nach wie vor nicht. Die folgende Frage (kommt vor) wird nicht angezeigt. Daran knüpft eben ein anderes JavaScript an: Wenn (kommt vor), dann erscheinen die nächsten zwei Fragen. Könnte es daran liegen?
by SoSci Survey (327k points)
Was Sie mit "kommt vor" meinen, verstehe ich nicht genau?! Vielleicht könnten Sie Ihre Frage oben kurz editieren und den aktuellen JavaScript-Code einfügen? Außerdem würde es vermutlich bei der Fehlersuche helfen, wenn Sie in der toogle()-Funktion (die nun anders heißt) zu Beginn noch folgendes einfügen:

console.log(textfeld);
console.log(textfeld.value);

Wichtig: Sie haben das toogle() auch in den SoSciTools.attachEvent()-Aufrufen angepasst, ja?
by s081199 (160 points)
edited by s081199
Ich habe jetzt oben den neuen JavaScript-Code eingefügt. Toogle hab ich überall angepasst wo es Toogle gab. ;)

Hier mein aktueller Pretest-Link:

Die betreffende Frage ist am Ende der Seite. Das Textfeld ist zu sehen. Bei der Eingabe ins Textfeld, sollte folgendes erscheinen: "kommt vor...nie bis ständig", genauso wie bei den Fragen darüber. Bei den Fragen darüber ist es jetzt besser zu erklären: Wenn es "nie vorkommt" gehen die zwei nächsten Fragen nicht auf, sonst schon. Genauso ist es auch bei dem "kommt vor" beim Textfeld eingestellt, welches man aber nicht sieht, weil der JavaScript-Code oben nicht hinhaut. Ja es wirkt dezent kompliziert. ;)
by SoSci Survey (327k points)
Wenn man in der Konsole die Funktion toogleText() manuell aufruft, funktioniert es. Also stimmt offenbar noch etwas nicht mit dem Event ... und auf den vierten Blick sehe ich auch was: Es muss "keyup" statt "onkeyup" heißen...
by s081199 (160 points)
Es klappt!!!! Da bin ich wohl auf einer schlechten Seite gelandet...onkeyup war mein Recherche-Ergebnis...

Ich kann meine tief empfundene Dankbarkeit für den Support hier gar nicht in Worte fassen! Sie sind echt der Wahnsinn! DANKESCHÖN!!!

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

...