Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Eingabe bei Matrix beschränken

  • Marion_test
  • Marion_test's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
2 months 3 weeks ago #255248 by Marion_test
Eingabe bei Matrix beschränken was created by Marion_test
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: Version 5.6.53 
Eigener Server oder LimeSurvey-Cloud: Cloud
Genutzte Designvorlage: Fruity (erweitert)
==================
Hallo,

ich benötige Hilfe bei der Eingabebeschränkung einer Matrix. Ich habe es schon mit verschiedenen Frage-Validierungsgleichung und Teilfragen-Validierungsgleichung versucht, aber ich hab es nicht hinbekommen. Ich hab auch die Tutorials der Matrizen zur Unterstützung genommen, jedoch auch erfolglos.
Folgende Eingaben würde ich gerne beschränken:
-Birthdate of Patient (hier ist momentan das Problem, dass der DatePicker nur in der ersten Zeile angezeigt wird und das auch nur, wenn ich Fragengruppenvorschau wähle. Wenn ich die Umfragenvorschau auswähle ist der DatePicker komplett verschwunden.
- VAS Before Treatment, sowie VAS End of Treatment sollten auf die Zahleneingabe 1-10 beschränkt werden.
-Total number of Sessions sollten Werte von 1 bis 20 annehmen können.
-Persistance of Symptoms before Treatment, sowie Additional treatments sollen so bleiben, wie sie sind (freie Zahleneingabe und freier Text)

Vielen Dank und liebe Grüße
 

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 months 3 weeks ago - 2 months 3 weeks ago #255257 by Joffm
Replied by Joffm on topic Eingabe bei Matrix beschränken
Bevor ich mir Dein eigentliches Problem ansehe, nur der Hinweis:
Bei ,mir verschwindet der datepicker nicht.
 

Rest kommt später.

Aber warum sagst Du nicht, was Du versucht hast?

Ich habe es schon mit verschiedenen Frage-Validierungsgleichung und Teilfragen-Validierungsgleichung versucht

Gerade daran kannst Du lernen, indem wir Dir zeigen, warum Deine Idee nicht funktioniert (und wie es richtig wäre)

Bis später

Joffm

Noch schnell nachgeschoben:
Am einfachsten ist der Einbau von Dropdowns in diese Spalten.
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 months 3 weeks ago by Joffm.

Please Log in to join the conversation.

  • Marion_test
  • Marion_test's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
2 months 3 weeks ago #255290 by Marion_test
Replied by Marion_test on topic Eingabe bei Matrix beschränken
Guten Morgen Joffm,

vielen Dank für die schnelle Antwort. Das mit dem Datepicker ist komisch, weil ich ihn in der Fraggengruppenvorschau nur in der ersten Zeile sehe und in der Umfragenvorschau gar nicht (siehe Screenshot).

Ich hab folgenden Ausdruck verwendet:
(is_empty(self.sq_1_X003.NAOK) OR self.sq_1_X003.NAOK < 11) AND
(is_empty(self.sq_2_X003.NAOK) OR self.sq_2_X003.NAOK < 11) AND
(is_empty(self.sq_3_X003.NAOK) OR self.sq_3_X003.NAOK < 11) AND
...

Den gleichen Ausdruck hab ich für X004 verwendet. Bei X005 hab ich <21 gesetzt.

Das mit den Dropdowns ist eine gute Idee, ich werde ds mal versuchen umzusetzen, danke!

Liebe Grüße
 

Please Log in to join the conversation.

  • Marion_test
  • Marion_test's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
2 months 3 weeks ago #255294 by Marion_test
Replied by Marion_test on topic Eingabe bei Matrix beschränken
Ich nochmal :)
Ich hab das mit den Dropdowns jetzt mit Hilfe deines Tutorials ausprobiert, aber mir werden keine Dropdowns angezeigt. Ich weiß aber nicht wo der Fehler liegt.
 

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 months 3 weeks ago - 2 months 3 weeks ago #255311 by Joffm
Replied by Joffm on topic Eingabe bei Matrix beschränken
Hallo, Marion, nicht so schnell.

1. Ich konnte das Datepicker-Problem in der LimeSurvey-Cloud reproduzieren.
Ich weiß zwar, woran es liegt - der rootPath ist nicht so wie erwartet.
Aber das nützt jetzt wenig.

Ich hatte ja schon bei Deiner vorigen Frage geschrieben, dass mir dieser Datepicker sowieso nicht gefällt.
Du könntest z.B. eine Eingabemaske erstellen; ist im "Tutorial 3: Gimmicks": gezeigt (zwei verschiedene Möglichkeiten)



Dies muss natürlich beides validiert werden, da man auch den 67.23.0023 eingeben könnte.

Und: Ist der Geburtstag eigentlich wichtig? Genügt nicht das Alter? naja, Deine Sache.

Jetzt ein Wort zu Deinen Validierungsversuchen.
Laut Handbuch  erwartet die Funktion "is-empty(var)" einen Parameter, der überprüft wird, ob er leer ist oder nicht.
Determine whether a variable is considered to be empty:       bool is_empty(var)

Die Variable "self" ist eine Kurzform für die gesamte Frage.
Wie Du siehst expandiert sie zu allen Zellen.
is_empty(self) bekommt damit eine ellenlange Liste von Parametern.
Jetzt hast Du zwar eingeschränkt durch self.sq_1_X002.NAOK
Aber diese Parameter hinter "sq" bedeuten: "Nimm alles, was diesen Parameter enthält"
Also alle Zeilen, die als Code eine "1" enthalten, 1, 10, 11, 12, 13,..., 21,...
Diese müssen also auch eindeutig sein, wie "Y01", "Y02",...;"Y10", "Y11".

In diesem Falle könntest Du natürlich alle Gleichungen direkt mit dem QCode schreiben (Du sparst ja keine Zeile); ein Vorteil von "self" ist aber noch, dass Du Dich nicht darum kümmern musst, falls Du die Frage einmal umnennst ("self" enthält immer den aktuellen Fragecode).
Der große Vorteil zeigt sich erst, wenn Du auf bestimmte Teile einer Matrix zugreifen willst.
Beispiel: Matrix mit reversen Items.
Wenn Du dann die normalen Teilfragen mit "N01", "N02", die reversen mit "R01", "R02",... codierst, hast Du mit self.sq_R bzw. self.sq_N genau die gewünschten Items.

Noch ein Letztes.
Dir drei ersten Fragen dieser Gruppe.
Ich hatte bei Deiner vorigen Frage die mittlere dieser drei breiter gemacht, da hier ja ein Drop-Down mit langen Items war.
Dies ist jetzt nicht der Fall, und die linke Frage ist dadurch sehr "gepresst".
Entferne daher dieses aus der ersten und dritten Frage
Code:
  div #question{QID} {
    width:50%
  }

 

Jetzt musst Du Dich entscheiden, was Du mit dem Geburtsdatum machst (Du kannst es auch einfach eingeben lassen) und dann mit einer regulären Expression validieren wie ^\s*(3[01]|[12][0-9]|0?[1-9])\.(1[012]|0?[1-9])\.((?:19|20)\d{2})\s*$
Wäre dann die Funktion "regexMatch".

So, jetzt schaue ich mir einmal Deine neue Datei an.

Edit: Na, das ging schnell.
Der "Listener"-Block ist nicht abgeschlossen.
Dort fehlt ein });
Oder umgekehrt gesagt: Vor "Returning to page"

Wenn in der Überschrift steht "0-10", sollte die Skala doch auch bei 0 starten.

Wie gesagt, einige Dich bezüglich des Datums; dann schicke ich einmal meinen Vorschlag dazu.

Bis dann
Joffm





 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 months 3 weeks ago by Joffm.
The following user(s) said Thank You: Marion_test

Please Log in to join the conversation.

  • Marion_test
  • Marion_test's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
2 months 3 weeks ago #255325 by Marion_test
Replied by Marion_test on topic Eingabe bei Matrix beschränken
Hallo Joffm,

vielen Dank für deine Hilfe! Ich hab mich jetzt für die Drop-Down Variante entschieden, da die Validierung der anderen Variante (für mich) zu komplex ist. 
Außerdem hab ich mich gegen das Geburtsdatum und für das Alter entschieden, da das doch auch einfacher war umzusetzen. :)
Ich bin jetzt eigentlich ganz happy mit meiner Lösung, aber vielleicht hast du ja noch Verbesserungsvorschläge.

Liebe Grüße und nochmal vielen Dank für deine Hilfe!!

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 months 3 weeks ago - 2 months 3 weeks ago #255340 by Joffm
Replied by Joffm on topic Eingabe bei Matrix beschränken
Ja, das sieht doch gut aus.
Ich habe noch dies zugefügt.
Zunächst im script die Reste vom Datepicker entfernt.

1. Zwischen "0 = no pain" und "10= max. pain" ein <br/> eingefügt, damit der Zeilenumbruch etwas "schöner" ist.
2. Ich weiß nicht, wie Euer theme dies handhabt; jedenfalls sieht eine linksbündige Darstellung von "Patient 1", "Patient 2" m.E. auch gefälliger aus.
Dies mit
Code:
.ls-answers tbody .answertext {
    text-align: left;
}

Einfach unten beim Styling der Spaltenbreiten hinzugefügt.

3. Ich habe die zweite Frage an die erste angeklebt.
Code:
<style type="text/css">
#question{QID}.question-container
 {
   margin-bottom: 0em;
 }
</style>

in jeder der drei Fragen.

4. Jetzt stellt sich noch die Frage: Soll man die Jahre und Monate validieren.
Irgendwie so
self.sq_Y001_X001)<81 and
self.sq_Y002_X001)<81 and
...
self.sq_Y020_X001)<81 and
self.sq_Y001_X002)<51 and
self.sq_Y002_X002)<51 and
...
self.sq_Y020_X002)<51 and

Und als Validierungstipp überprüft man, ob das Maximum aller Werte größer ist; denn dann gibt es einen Fehler.
Hier muss dann wieder jeder einzelne Term in die Funktion "max()" geschrieben werden, das naheliegende "max(self.sq_Y_X001)" geht nicht.
Habe ich auch einmal eingebaut.

5. Du hast als Dezimaltrennzeichen den Punkt vorgesehen.
Dann dürfen die Min. und Max. werte aber nicht mit einem Komma eingegeben werden
Und damit nicht dieses passiert
 
vielleicht in alle drei Fragen einen Tip. 
Dann gibt es keinen Versatz.

Könnte dann so aussehen
 



 

File Attachment:

File Name: limesurvey...19_J.lss
File Size:90 KB


Alles Gute

Joffm
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 months 3 weeks ago by Joffm.

Please Log in to join the conversation.

Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose