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

0 votes

Liebes SoSci-Team,

Ich würde gerne wenn eine offene Frage beantwortet wir den Weiter-Button jener Seite einblenden. Wenn die offene Frage jedoch nicht beantwortet worden ist, will ich, dass der Weiter-Button weiterhin ausgeblendet wird. Wie kann ich das machen?

Danke und viele Grüsse

in SoSci Survey (dt.) by s103594 (230 points)

1 Answer

0 votes

Blenden Sie den Weiter-Knopf mittels JavaScript und der Funktion SoSciTools.submitButtonsHide() aus - und hängen Sie einen sog. "EventHandler" an das offene Eingabefeld (Ereignis "keyup"), sodass der Knopf wieder eingeblendet wird (SoSciTools.submitButtonsDisplay()), wenn etwas eingetragen wurde.

by SoSci Survey (185k points)
Ich habe folgenden Code geschrieben:
<script type="text/javascript" src="../plugins/XRegExp/xregexp-all.min.js"></script>
<script type="text/javascript">
<!--
 
function WordCounter(inputID, outputID) {
  var textinput = document.getElementById(inputID);
  var textout = document.getElementById(outputID);

  // Wörter sind hier definiert als 1+ Buchstaben
  var tester = new XRegExp("\\p{L}{2,}", "Ag");
 
  function refresh() {
    var text = textinput.value;
    var words1 = XRegExp.match(document.getElementById("T001_01").value, tester);
    var words2 = XRegExp.match(document.getElementById("T001_02").value, tester);
    var words3 = XRegExp.match(document.getElementById("T001_03").value, tester);    textout.innerHTML = words1.length + words2.length + words3.length;

}

function CounterCheck() {
  if (textout.innerHTML <= 10)
    return SoSciTools.submitButtonsHide();
  else
    return SoSciTools.submitButtonsDisplay();
}

  textinput.addEventListener("keyup", refresh);
  refresh();
  textinput.addEventListener("keyup", CounterCheck);
  CounterCheck();
  
  }
    
//
new WordCounter("T001_01", "wordcount");
new WordCounter("T001_02", "wordcount");
new WordCounter("T001_03", "wordcount");
 
// -->
</script>

Es funktioniert dennoch nicht, haben Sie eine Idee weshalb das so sein könnte?
Was sagt denn die JavaScript-Fehlerkonsole Ihres Browsers?

haben Sie ein Element "wordcount" in Ihrer Seite? Sie sagen mit dem Script, dass der Browser es die aktuelle Zeichenzahl dorthin schreiben soll.

Weiterhin wäre es m.E. sinnvoll, die Funktion CounterCheck() in refresh() aufzurufen und die Summe direkt zu übergeben, statt über textout.innerHTML zu gehen.
Ich habe jetzt folgenden Code:
<script type="text/javascript">
<!--
var input = document.getElementById("MA02");
SoSciTools.attachEvent(input, "keyup", function() {
  if (input.value == "") {
    SoSciTools.submitButtonsHide();
  }
 else {
    SoSciTools.submitButtonsDisplay();
  }
});

// -->
</script>

Leider wird der Weiter-Button noch immer angezeigt, auch wenn gar nichts im Textfeld ist. Wieso ist das so?
> Leider wird der Weiter-Button noch immer angezeigt, auch wenn gar nichts im Textfeld ist.

Sie blenden das Textfeld zu Beginn nicht aus. Ändern Sie Ihr Script ein wenig ab:

var input = document.getElementById("MA02");

function check() {
  if (input.value == "") {
    SoSciTools.submitButtonsHide();
  }
 else {
    SoSciTools.submitButtonsDisplay();
  }
}

SoSciTools.attachEvent(input, "keyup", check);
check();

Sie sehen, dass die Funktion hier am Ende einmal aufgerufen wird - also direkt beim Laden der Seite.

Wenn es damit noch nicht funktioniert, sehen Sie bitte in die JavaScript-Fehlerkonsole Ihres Browsers und/oder posten Sie einen Pretest-Link direkt (!) zur betroffenen Seite.
...