Hallo,
Mit der Validierung überprüfst Du generell, dass nur von Dir erlaubte Dinge eingegeben werden.
Was ist denn hier erlaubt?
Wenn die Teilfrage 4 nicht ausgewählt wurde, ist der Rest egal.
Wenn sie aber ausgewählt wurde, darf die Anzahl der ausgewählten Items (exklusive "Sonstiges") nur 1 sein.
Wir haben ja die Codes
Q1_SQ001
Q1_SQ002
Q1_SQ003
Q1_SQ004
Q1_other
Wenn man dies nicht weiß, ist es das Beste, man aktiviert die Umfrage und schaut sich die Antworttabelle an (In meinem Beispiel heißt die Frage nun einmal Q16.)
Um die Anzahl der gewählten Items zu bestimmen, dient die Funktion "count".
Und mit dem Wissen über "self", und "that" kann man nun einfach als Validierungsgleichung schreiben
self.sq_SQ004!="Y" OR
(self.sq_SQ004=="Y" AND count(self.sq_SQ)==1)
Zur Erklärung:
Das "self.sq_"-Konstrukt expandiert und berücksichtigt alle Teilfragen, die die Buchstabenkombination nach "sq_" enthalten.
Also "self.sq_SQ004" ist gleichbedeutend mit "Q1_SQ004", erleichtert aber ein eventuelles Umbenennen der Frage ("self" referenziert immer den Fragencode)
Dagegen wird "count(self.sq_SQ)" erweitert zu "count(Q1_SQ001, Q1_SQ002, Q1_SQ003, Q1_SQ004)".
Und hier kommt uns LimeSurvey entgegen. Da die "Sonstigen"-Option "Q1_other" heißt, also kein "SQ" enthält, wird sie nicht mitgerechnet.
Und dann noch einen knackigen Hinweis wie hier einfach
{if(self.sq_SQ004=="Y" AND count(self.sq_SQ)>1,"Teilfrage 4 ist exklusiv","")}
bekommt man dann dies:
Viel Erfolg
Joffm