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

Guten Tag!

Bei einer meiner Fragen wird der Teilnehmer gebeten, mehrere Texte in fünf verschiedene Eingabefelder zu schreiben. Jedes Feld stellt eine eigene Variable dar. Der Teilnehmer soll insgesamt (Summe aller fünf Eingabefelder) nicht weniger als 300 Wörter schreiben.

Die Umsetzung bei nur einem Eingabefeld mit angezeigtem Wort-Zähler und Prüfung/Fehlermeldung funktioniert gut über den Code unten. Kann dieser ggf. angepasst werden, sodass nicht nur ein Eingabefeld (AB01_1) sondern mehrere in Summe gezählt und geprüft werden (z.B. AB01_01 + AB01_02 ...)?

if (preg_match_all('/\\w{3,}/', value('AB01_01')) < 300) {
  repeatPage();
}

HTML/JS wie am Ende beschrieben: https://www.soscisurvey.de/help/doku.php/de:create:questions:text

in SoSci Survey (dt.) by s110954 (135 points)
edited by SoSci Survey

1 Answer

+1 vote

Was PHP angeht, können Sie einfach alle Felder abzählen lassen:

$cnt1 = preg_match_all('/\\w{3,}/', value('AB01_01'));
$cnt2 = preg_match_all('/\\w{3,}/', value('AB01_02'));
$cnt3 = preg_match_all('/\\w{3,}/', value('AB01_03'));
$cnt4 = preg_match_all('/\\w{3,}/', value('AB01_04'));
$cnt5 = preg_match_all('/\\w{3,}/', value('AB01_05'));
$sum = $cnt1 + $cnt2 + $cnt3 + $cnt4 + $cnt5;

Und weil sich Programmierer so ungerne wiederholen, kann man es auch als Schleife schrieben:

$sum = 0;
for ($i=1; $i<=5; $i++) {
  $sum+= preg_match_all('/\\w{3,}/', value(id('AB01', $i));
}

Im JavaScript machen Sie im Prinzip das gleiche. Die Zeile

var words = XRegExp.match(text, tester);

Führen Sie einfach 5-mal aus, einmal für jedes Eingabefeld. Und damit Sie für textinput und text nicht lauter unterschiedliche Variablen brauchen, packen Sie diese alle mit in die Zeile:

var words1 = XRegExp.match(document.getElementById("AB01_01").value, tester);

Das eben auch 5-mal oder mit einer FOR-Schleife.

by SoSci Survey (76.3k points)
Wunderbar! Funktioniert sehr gut. Vielen Dank für die schnelle Hilfe.
...