Welcome to the LimeSurvey Community Forum

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

Mehrfachauswahl mit Zahleneingabe in Kommentaren und verschiedenen Suffixen

  • HETILV
  • HETILV's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 month 1 week ago #258611 by HETILV
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: 6.4.12
Eigener Server oder LimeSurvey-Cloud: Eigener Server
Genutzte Designvorlage: vanilla
==================
Hallo,

ich möchte eine Mehrfachauswahl mit Kommentarfelder, bei denen nur ganze Zahlen eingegeben werden dürfen - außer bei "Sonstiges", dort soll Text eingegeben werden.
Ich hatte es mit einer Fragenvalidierung versucht, aber das funktioniert nicht so ganz. Wenn ich z. B. bei "Sonstiges" eine Zahl eingebe, dann akzeptiert er bei den anderen Kommentaren nachträglich auch Text. Es wäre schön, wenn er gleich bei der Eingabe nur Zahlen zulassen würde.Ist das möglich?

Zudem möchte ich gerne, verschiedene Suffixe haben. Ich hätte gerne bei der Teilfrage 2 und 4 "Jahre", bei Teilfrage 3 "Euro" und bei Teilfrage 5 keinen Suffix.
Die Suffixe haben ich eingetragen, aber ich weiß nicht, wie man unterschiedliche macht.

LG
HETILV
 

File Attachment:

File Name: limesurvey...4521.lss
File Size:26 KB

 

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 month 1 week ago - 1 month 1 week ago #258641 by Joffm
Hallo,
gut, die Validierung muss ja etwas anders aussehen.
Wenn Du Zahlen bzw. Geldbeträge erzwingen willst, muss Du die entsprechenden Funktionen benutzen "!is_empty()" reicht nicht.
Du kannst für ganze Zahlen z.B. "is_int()" benutzen, für Dezimalzahlen "is_float()".
Würde z.B. hiermit funktionieren (Geldbetrag als Dezimalzahl; achte darauf, das Komma als Dezimaltrenner einzustellen)
(A1_2!="Y" OR (A1_2=="Y" AND is_int(A1_2comment))) and (A1_3!="Y" OR (A1_3=="Y" AND is_float(A1_3comment))) and (A1_4!="Y" OR (A1_4=="Y" AND is_int(A1_4comment))) and (A1_5!="Y" OR (A1_5=="Y" AND !is_empty(A1_5comment)))

Hier solltest Du aber die erscheinende Fehlermeldung "dynamischer" gestalten. 
Vielleicht:
Wenn irgendwo ein Kästchen angekreuzt wurde, aber noch kein Wert, etwas wie "Bitte, tragen Sie den Wert ein!"
Und wenn der Wert hinten nicht den Kriterien entspricht, eben "Bitte, geben Sie nur Zahlen ein"
{if(count(self.sq_2.NAOK)==1 OR count(self.sq_3.NAOK)==1 OR count(self.sq_4.NAOK)==1 OR count(self.sq_5.NAOK)==1,'Bitte, tragen Sie in beide Felder etwas ein',if((!is_empty(A1_2) and !is_int(A1_2comment)) OR (!is_empty(A1_3) and !is_float(A1_3comment)) OR (!is_empty(A1_4) and !is_int(A1_4comment)),'Bitte, geben Sie nur Zahlen ein',''))}

 



Oder Du benutzt "regexMatch(pattern,QCode)" mit der entsprechenden Regular Expression. Damit kannst Du dann ganz fein steuern, was eingegeben werden kann.

Aber was ist  denn mit der Teilfrage "Sonstiges"?
In Deiner lss ist es doch eine ganz normale Teilfrage. Wo soll der Teilnehmer etwas benennen?
Dann ist aber "'Anderes:' Kommentarfeld ist Pflichtfeld" eingeschaltet, was ein Weiterkommen unmöglich macht.
Soll dies doch die "normale "Sonstige"-Funktion sein, oder willst Du es so lassen und dann im Fall der Falle darunter ein Textfeld einblenden?

Zu den Suffixen:
Das hast Du eigentlich schon.
Du musst nur die "comment-items" durchnummerieren.
Code:
        // Insert comment suffix
        $('#question{QID} .comment-item:eq(1)').append('<span class="comment-suffix">Jahre</span>');
        $('#question{QID} .comment-item:eq(2)').append('<span class="comment-suffix">Euro</span>');
        $('#question{QID} .comment-item:eq(3)').append('<span class="comment-suffix">Jahre</span>');
 

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 1 month 1 week ago by Joffm.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 month 1 week ago - 1 month 1 week ago #258677 by Joffm
Manchmal kommt die Vergreisung etwas deutlicher zum Vorschein.
Das mit dem "Sonstigen" habe ich jetzt kapiert; da kommt ja ein Text rein.

Noch zu Deiner ersten Validierung:
Im Code waren Zeilenumbrüche enthalten.
Dir Und/Oder Hierarchie war nicht in Ordnung. Es muss noch ein Klammerpaar um die Bedingungen für jede Zeile
Code:
((is_empty(A1_2) and is_empty(A1_2comment)) OR (!is_empty(A1_2) and is_numeric(A1_2comment))) AND ((is_empty(A1_3) and is_empty(A1_3comment)) OR (!is_empty(A1_3) and is_numeric(A1_3comment))) AND ((is_empty(A1_4) and is_empty(A1_4comment)) OR (!is_empty(A1_4) and is_numeric(A1_4comment))) AND ((is_empty(A1_5) and is_empty(A1_5comment)) OR (!is_empty(A1_5) and !is_empty(A1_5comment)))

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 1 month 1 week ago by Joffm.

Please Log in to join the conversation.

  • HETILV
  • HETILV's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
1 month 1 day ago #258995 by HETILV
Hallo Joffm,

vielen lieben Dank für die Hilfe. Ich habe mich jetzt dafür entschieden bei allen (außer "Sonstiges") nur ganze Zahlen zuzulassen. Erstens machen bei mir Kommabeträge bei den Euros doch nicht wirklich Sinn und zweitens muss ich zugeben, dass es nicht wirklich funktioniert hat.
Du hattest geschrieben, dass ich darauf achten soll, dass Komma als Dezimaltrenner eingestellt ist. Ich gehe mal davon aus, dass das unter Einstellungen --> Textelemente eingestellt werden muss. Das habe ich gemacht, aber ein Komma hat er trotzdem nicht genommen, nur Punkte.

Und ich habe jetzt wieder etwas gelernt. Ich wusste bisher nicht, dass ich die Fragen Validierungshinweise auch nochmal steuern kann. Danke.

Gruß
HETILV 

File Attachment:

File Name: limesurvey...3254.lss
File Size:26 KB

Please Log in to join the conversation.

Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose