Welcome to the LimeSurvey Community Forum

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

Erscheinen von Fragen abhängig von einer eingegeben Zahl möglich?

More
4 years 9 months ago #209081 by Christine255
Hallo zusammen,

ich möchte gerne bei meiner Umfrage die Teilnehmer fragen, wie viele Medikamente sie einnehmen. Das ist noch einfach - eine Frage mit Maskeneingabe: Zahleneingabe einfügen.


Dann wirds komplizierter. Gibt der Teilnehmer an, dass er 1 Medikament einnimmt, soll er daraufhin einen Fragenblock mit 5 Fragen (Fragentyp: mehrfach kurze Texte) zu diesem Medikament beantworten.

Nimmt er 2 Medikamente ein, muss er 2x diesen Fragenblock beantworten, also zu jedem Medikament 1x den Fragenblock. Das heißt, dass abhängig von der angegeben Anzahl Medikamente in der ersten Frage, die Anzahl der Frageblöcke mit den je 5 Fragen erscheinen soll. Sprich nimmt er 3 Medikamente ein, soll 3x der Fragenblock erscheinen, die er dann pro Medikament beantworten muss. Nimmt er 5 Medikamente ein, muss der Fragenblock 5x erscheinen.

Ist so etwas möglich? Leider bin ich bisher im Forum und im Manual nicht besonders schlau geworden. Arbeite mit der Version 3.23.7+201006 auf einem Mac.

Vielen Dank für jede Hilfe!
The topic has been locked.
More
4 years 9 months ago #209085 by Joffm
Hallo, Christine,
es wird überhaupt nicht kompliziert.
Du hast schon alles beschrieben.
Nur: Sprich nicht von Fragenblock wenn es nur eine Frage vom Typ "mehrfacher kurzer Text" ist.

Gut, Du weißt, dass die Frage mehrmals angelegt werden muss (gewünschte Maximalzahl)
Nun gibt es doch folgende Bedingungen:
Frage zum ersten Medikament gestellt wird: Anzahl>0
Frage zum zweiten Medikament gestellt wird: Anzahl>1
Frage zum dritten Medikament gestellt wird: Anzahl>2

Das ist alles.
Du trägst also in die Relevanzgleichung der ersten Frage ein : Q1>0, der zweiten Frage: Q1>1, usw.
wenn Q1 der Code der Frage nach der Medikamentenzahl ist.



Noch so nebenbei:
Gestalte die erste Frage ein bisschen schöner.
Einfach mit Prefix und Suffix und Texteingabeboxbreite.
Die Standardansicht mit der Box über die gesamte Breite und dann der rechtsbündigen Eingabe sieht wirklich nicht gut aus.


Eventuell wäre eina andere Art des Designs besser.
1. Frage: Bitte, geben Sie die Namen der Medikamente ein, die Sie aktuell nehmen.
mit dynamischen Anzeigen der Eingabefelder
2.a.-2.x. Die Detailfragen dazu.
Beispiel:





Und dann folgen die Detailfragen.





Und als Letztes für heute.
Diese Fragen nach Tageszeitpunkt und vor allem Dosierung werden Dich bei der Kodierung zur Verzweiflung bringen, da jeder etwas anderes schreibt, auch wenn er dasselbe meint.
Versuche dies zu quantifizieren. Man kann dann statt dieser beiden Textfelder dort z.B. Drop-downs einfügen.
Nur als Denkanstoß

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
4 years 9 months ago #209101 by Joffm
Hallo, Christine,
eigentlich wollte ich noch eine Beispielstudie anfügen.

Hier ist sie.

File Attachment:

File Name: limesurvey...1953.lss
File Size:51.86 KB

In der ersten Gruppe das bereits Beschriebene.
In der zweiten noch ein kleines Schmankerl und die schon erwähneten Drop-Downs



Schau es einfach einmal an.

Allerdings gibt es - wie häufig - die Möglichkeit, dass Du bei einer Uni-Installation keine Rechte hast javascript einzufügen.
Das ist dann eben Pech.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Christine255
The topic has been locked.
More
4 years 9 months ago #209131 by Christine255
Hallo Joffm,

vielen lieben Dank schon mal für die Erklärungen und Hinweise. Bei Abrakadabra und Blocksbergsalbe musste ich kurz lachen ;) Das hat mich ein gutes Stück weitergebracht.

1. Ich habe nun 10x die Frage "mehrfach kurzer Text" eingefügt und bei jeder einzelnen Frage die entsprechende Relevanzgleichung (Q1>0, Q1>1 etc.) eingegeben. Beim Austesten wurden dann jedoch alle 10 Fragen angezeigt, obwohl ich in der Frage zuvor bei der Anzahl der eingenommenen Medikamente nur die Zahl "2" eingegeben hatte (hier steht in der Relevanzgleichung Q1) Theoretisch dürfte die Frage doch nun auch nur 2x erscheinen oder? Mache ich da was falsch?



2. Deine Idee mit dem veränderten Design:"1. Frage: Bitte, geben Sie die Namen der Medikamente ein, die Sie aktuell nehmen.mit dynamischen Anzeigen der Eingabefelder2.a.-2.x. Die Detailfragen dazu." finde ich sehr gut! In der Beispielstudie wolltest du mir glaube ich zeigen, wie die Einstellungen dafür zu treffen sind. Leider habe ich oder sehe ich die Möglichkeit nicht, wie ich die lss-Datei in Lime-Survey hochladen kann, um sie mir anzuschauen. Ich kann lediglich eine lss-Datei exportieren. Oder bin ich auch hier blind? Irgendwie fehlt mir dieser Button zum Import bei der Uni-Version.



Deswegen wäre es super nett, wenn du mir kurz erklären könntest, wie ich das mit den Feldern mache, wenn ein Teilnehmer "Abrakadabra" in der ersten Frage als Medikament angibt, dieses "Abrakadabra" dann in der zweiten Frage erscheint (s. dein Beispiel). Gerne würde ich auch die Buttons "[+]Medikament und [-]Medikament" einfügen. Wie funktioniert das?

Vielen Dank auch mit dem Tipp für den Einnahmezeitpunkt und der Dosierung. Das mit den Drop-Downs werde ich definitiv umsetzen!

Beste Grüße
Christine
The topic has been locked.
More
4 years 9 months ago #209134 by Joffm
So, wie ich das sehe, heißen Deine Fragen ja auch ganz anders.
Die Frage aller Fragen heißt bei Dir doch "AnzahlMedikamente".

In meiner Beispielstudie siehst Du ja, dass die Frage eben "Q1" heißt.
Diesen Transfer hatte ich Dir zugetraut. ;)

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Christine255
The topic has been locked.
More
4 years 9 months ago #209139 by Christine255
Ach ich bin auch blöd...:dry: Habe gerade noch mal genau deine Anweisungen gelesen und da steht auch Q1 bei der ersten Frage als Code und nicht als Relevanzgleichung. Geändert und jetzt klappts! Juhu!


Trotzdem wäre ich noch sehr an der Umsetzung deiner anderen Vorschlägen interessiert (s. Punkt 2) :)

Beste Grüße
Christine
The topic has been locked.
More
4 years 9 months ago #209140 by Joffm
Hast Du Dir mein Beispiel gut angesehen?
Da ist alles drin.

Schön, dass es Dir gefällt.
Da werden wir dann einmal ins Detail gehen.
Aber erst morgen (mittag) wieder.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Christine255
The topic has been locked.
More
4 years 9 months ago #209146 by Christine255
Leider kann ich deine Beispielumfrage ja nicht in Lime Survey hochladen (s. vorherige Nachricht + die beiden Screenshots) und daher nicht anschauen. Übersehe ich die Import-Möglichkeit vielleicht oder gibt es noch eine andere Option, um sich deine Beispielumfrage anzuschauen? Das lss-Format kann ich ohne Lime Survey nicht öffnen oder?

Bin für jeden Tipp dankbar.
The topic has been locked.
More
4 years 9 months ago #209175 by Joffm
Hallo, Christine,
Du kannst wirklich keine lss-Exporte importieren? Ich hatte diesen Passus zwischen den beiden screenshots übersehen.
Wenn es geht, ist es hier.


oder auch beim "Erstellen" deiner Umfrage


Falls der Admin Euch so sehr "kastriert" hat, werdet Ihr wohl auch keine Rechte haben, javascript einzufügen. Oder?
Damit wäre dann die Lösung mit dem "Hinzufügen"-Button ad acta zu legen.

Du kannst es aber einmal schnell ausprobieren.
Füge in eine Frage (Im Quellcode-Modus) ein:
Code:
<script type="text/javascript" charset="utf-8">
  $(document).on('ready pjax:complete',function() {
      alert("Hallo, hier ist javascript");
    });
</script>
Wenn Du Frage anzeigst und die Meldung siehst, ist es gut, sonst klappt es nicht.

Deswegen wäre es super nett, wenn du mir kurz erklären könntest, wie ich das mit den Feldern mache, wenn ein Teilnehmer "Abrakadabra" in der ersten Frage als Medikament angibt, dieses "Abrakadabra" dann in der zweiten Frage erscheint


Gut, dies hängt wohl auch ein bisschen mit Deinem Irrtum Q1 betreffend zusammen.
Du nennst die Frage "AnzahlMedikamente" .
Dann wird in der Variablen mit diesem Namen der Wert gespeichert. Später im Export wird dies die Spaltenbeschriftung sein.
Daher kann ich auf diese Variable später zugreifen, z.B. um diverse Operationen damit zu machen.
Vergleichen (AnzahlMedikamente==4) , irgendwo anders noch einmal anzeigen ( {AnzahlMedikamente} ), mathematische Operationen durchführen ( sum(AnzahlMedikamente,AnzahlPlacebo) ).
Du beziehst Dich immer auf diesen Variablennamen.
Daher auch in der Studie
AnzahlMedikamente>0
AnzahlMedikamente>1
...

Wie Du genau auf verschiedene Teile einer Frage/Antwort zugreifen kannst, finst Du hier
www.limesurvey.org/manual/ExpressionScri...#Access_to_variables

Hier noch ein bisschen heruntergescrollt steht dann noch dieses:

Qcode variable naming

Here are the details of how to construct a Qcode (and access some properties) by question type. In general, Qcodes are constructed as:

QuestionCode . '_' . SubQuestionID . '_' . ScaleId

For comment and other, the corresponding question codes are QuestionCode_comment and QuestionCode_other, respectively.


Das ist der entscheidende Teil:
QuestionCode . '_' . SubQuestionID . '_' . ScaleId

und dies
the selected response code for the question if it is relevant (otherwise blank), or the text value if it is not a coded question
Soll heißen: Ist es eine kodierte Frage wird der Code angezeigt, bei Texteingabefragen der eingegebene Text.

Bei Einfachnennung gibt es keine Teilfragen, also greift man auf den Wert zu über den Fragencode (AnzahlMedikamente)

Bei Fragen mit Teilfragen (Mehrfachnennung, Matrizen) greift man zu über Fragencode_Teilfragencode
FragenzurMed1_SQ001 (oder wie immer Du die Teilfragen benannt hast)
Matrix(Texte/Zahlen) haben nun noch ein Dimension mehr.
Also hier
Fragencode_TeilfragencodeYAchse_TeilfragencodeXAchse

Und bei einer Dual Matrix gilt: Erste Skala = 0, zweite Skala = 1
Fragencode_Teilfragencode_0, bzw. Fragencode_Teilfragencode_1.

Es gibt in der Handbuch-Tabelle ja noch viele andere "properties" (.shown, .value, .NAOK,...), die aber zunächst einmal außen vor bleiben sollen.
".NAOK" wäre dann wichtig, wenn Du mathematische Berechnungen in der Studie anstellen willst.

Damit können wir auch die Frage nach dem Medikamentennamen beantworten
Wenn in der Frage Q1, Teilfrage SQ001 nach dem Namen gefragt wurde, kannst Du in späteren Fragen mit {Q1_SQ001} diesen einblenden.

"Sie haben ja gesagt, dass Sie {Q1_SQ001} verwenden."
Wird einfach so in den Fragetext geschrieben.

So, wieder viel zu viel geschrieben.
Aber teste zunächst einmal ob das javascript funktioniert.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Christine255
The topic has been locked.
More
4 years 9 months ago #209191 by Christine255
Hallo Joffm,

tatsächlich kann ich mit diesem Uni-Account keine lss-Datei in Lime Survey importieren...

Auch die andere von dir genannte Möglichkeit funktioniert leider nicht. Man bekommt seinen Zugang über die Uni nur für eine im Voraus festgelegte Umfrage :pinch:

Dafür hat das mit dem javascript funktioniert:


Dann müsste man doch auch irgendwie die Buttons einfügen können oder? Das sähe viel professioneller aus, wenn der Teilnehmer immer wieder ein neues Medikament "hinzufügen" könnte.

Dank deiner Anleitung konnte ich auch den Namen des Medikaments, das in der ersten Frage gefragt wird, in die zweite Frage einfügen.


Nun würde ich gerne noch die Klappbox für Dosierung und Einnahmezeitpunkt in das Mehrfach-kurze-Texte-Feld einfügen. Ich habe schon ein bisschen im englischen Forum recherchiert und gesehen, dass das auch mit einem javascript funktioniert. Leider sind die von mir gefundenen Beiträge alle schon mehrere Jahre alt. Müsste ich ein solches javascript für die Klappbox auch wie oben in dem Fragenfeld im Quellcode-Modus einfügen? Und wie füge ich dann die Antwortmöglichkeiten für die Klappbox ein? Ich befürchte das werden nämlich ziemlich viele...

Beste Grüße
Christine
The topic has been locked.
More
4 years 9 months ago #209192 by Joffm
Hallo, Christine,

Man bekommt seinen Zugang über die Uni nur für eine im Voraus festgelegte Umfrage

Oh, Gott.

Das ist zwar schade, aber kein Beinbruch. Dann machen wir es eben anders.
Aber die Hauptsache ist, dass javascript läuft.

Gut, erstens also die Button, zweitens das Dropdown im "mehrfachen kurzen Text".

Heute ist es mir zu spät; aber morgen werde ich die scripte schicken, so dass Du sie nur hineinzukopieren brauchst.
Natürlich musst Du dann einige Texte anpassen. ;)

Joffm

P.S. Ach, Du nimmst Du auch diese Medikamente?
Pass auf die Nebenwirkungen auf. Ich habe schon fast keine Haare mehr.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
4 years 9 months ago #209197 by holch
Immer wieder spannend, was sich die Unis so einfallen lassen.

Statt LS auf dem neuesten Stand zu halten werden lieber irgendwelche komischen (und in meiner Ansicht reichlich unnötigen) Modifizierungen vorgenommen. Danach ist klar, dass keiner Lust hat so ein Limesurvey aktuell zu halten.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.
The topic has been locked.
More
4 years 9 months ago #209211 by Joffm
So, Christine, dann wollen wir uns einmal den Medikamenten widmen.

Wir haben ja drei Teile zu bearbeiten.
1. Dynamische Anzeige mittels Button
2. Anzeige der Folgefragen
3. Dropdown in den Folgefragen

1. Buttons
Zunächst ist die Frage eine normale Frage vom Typ "mehrfacher kurzer Text", zum Beispiel mit den Teilfragentexten "1. Medikament", "2. Medikament",...
Ich nenne sie Q1.
Du fügst nur folgendes script in den Quellcode der Frage ein.
Code:
<script type="text/javascript" charset="utf-8">
  $(document).on('ready pjax:complete',function() {
 
    // A function to add or remove rows of a multiple-short-text question
    function varLengthArray(qID) {
 
 
      // The HTML content of the Add/Remove elements - modify as you wish
      var addContent = '[+] Medikament zufügen';
      var removeContent = '[-] Medikament löschen';
 
      // Insert the buttons
      $('#question'+qID+' .subquestion-list').append('<div id="addButton'+qID+'" class="control-button btn btn-primary">'+addContent+'</div><div id="removeButton'+qID+'" class="control-button btn btn-primary">'+removeContent+'</div>');
 
      // Style the elements - you can modify here if you wish
      $('#question'+qID+' .control-button').css({
        'margin':'10px 0 10px 10px',
        'padding':'1px',
        'text-align':'center',
        'width':'auto',
        'cursor':'pointer',
        'float':'left'
      });
 
      // Initially hide the Remove element
      $( 'div#removeButton'+qID ).hide();
 
      // Call the functions below when clicked
      $( 'div#addButton'+qID ).click(function (event) {
        addRow(qID);
      });
      $( 'div#removeButton'+qID ).click(function (event) {
        removeRow(qID);
      });
 
      // Function to add a row, also shows the Remove element and hides the
      function addRow(qID) {
        $('#question'+qID+' .answer-item:hidden:first').show();
        $('div#removeButton'+qID).show();
        if ($('#question'+qID+' .answer-item:visible').length == $('#question'+qID+' .answer-item').length)  {
          $('div#addButton'+qID).hide();
        }
      }
 
      // Function to remove a row and clear the input value
      function removeRow(qID) {
        $('#question'+qID+' .answer-item:visible:last').hide();
        $('#question'+qID+' .answer-item:hidden input[type="text"]').each(function(i) {
          $(this).val('').trigger('keyup');
        });
        $( 'div#addButton'+qID ).show();
        if ($('#question'+qID+' .answer-item:visible').length == 1)  {
          $('div#removeButton'+qID).hide();
        }
      }
 
      // Just some initialization stuff
      // Initially hide all except first row or any rows with populated inputs
      $('#question'+qID+' .answer-item input[type="text"]:not(:first)').each(function(i) {
        if($.trim($(this).val()) == '') {
          $(this).closest('.answer-item').hide();
        }
        if ($('#question'+qID+' .answer-item:visible').length > 1)  {
    //      $('div#removeButton'+qID).show();
        }
      });
    }
 
    // Call the function with a question ID
    varLengthArray({QID});
  });
 
</script>

Hier kannst Du den Text der Buttons anpassen
// The HTML content of the Add/Remove elements - modify as you wish
var addContent = '[+] Medikament zufügen';
var removeContent = '[-] Medikament löschen';


Hier kannst Du die Farbe der Button ändern
// Insert the buttons
$('#question'+qID+' .subquestion-list').append('<div id="addButton'+qID+'" class="control-button btn btn-primary">'+addContent+'</div><div id="removeButton'+qID+'" class="control-button btn btn-primary">'+removeContent+'</div>');

Wie Du siehst, haben beide die Klasse ".btn-primary". Dies bezieht sich auf die benutzte Bibliothek (bootstrap).
Und damit haben diese Buttons das gleiche Verhalten wie der "Weiter"-Button, da dieser dieselbe Klasse besitzt.
Für Buttons gibt es verschiedene Klassen:
.btn-default (
.btn-primary
.btn-success
.btn-înfo
.btn-warning
.btn-danger
Sehen standardmäßig so aus.


Daher kannst Du zum Beispiel den "+"-Button grün machen, indem Du dort "btn-primary in "btn-success" änderst, den "-"-Button rot mit "btn-danger"

Wie Du möchtest.

Hier kann man das Aussehen der Buttons auch noch ändern, würde ich aber nicht (außer es sieht wirklich nicht gut aus in Eurem Uni-theme).
// Style the elements - you can modify here if you wish
$('#question'+qID+' .control-button').css({
'margin':'10px 0 10px 10px',
'padding':'1px',
'text-align':'center',
'width':'auto',
'cursor':'pointer',
'float':'left'
});


Das wäre schon alles.


2. Anzeige der Folgefragen

a. Bisher hast Du die Folgefragen eingeblendet mit der Bedingung "Ist die Anzahl der angegebenen Medikamente größer als x?"
Zunächst einmal hast Du diese Anzahl noch nicht.
Ich würde sie daher berechnen, damit später im Datensatz eine quantifizierte Größe "Anzahl" steht.
Dazu legst Du eine Frage vom Typ "Gleichung" an. Soll sie meinetwegen "anzMed" heißen.
In den Fragetext gibst Du ein {count(that.Q1)}
Und damit wird in der Variablen "anzMed" die Anzahl der eingegebenen Medikamente gespeichert.

Nun hast Du zwei Möglichkeiten, die Folgefragen einzublenden.
Entweder du benutzt diesen errechneten Wert, dann wäre es - wie schon gehabt
anzMed>0
anzMed>1
anzMed>2
...

b. oder Du sagst "Okay, die Folgefrage für Medikament x muss angezeigt werden, wenn das Feld in Q1 ausgefüllt war, nicht leer war.
Dazu dient die Funktion "is_empty()". Ausrufezeichen ist das Negationszeigen. Steht alles im Handbuch unter "Operatoren"
Dann wären die Relevanzgleichungen entsprechend so:
!is_empty(Q1_SQ001) : wenn die Teilfrage SQ001 der Frage Q1 nicht leer ist.
!is_empty(Q1_SQ002)
!is_empty(Q1_SQ003)
...

3. Drop-Down in den Folgefragen
Dazu gibt es dieses script
Code:
<script type="text/javascript" charset="utf-8">
  $(document).on('ready pjax:complete',function()  {
    var qID = {QID};    
    var inputNum = 4;
 
    // Define the select element (dropdown)
    var prov1 = '<select id="prov1" class="form-control">\
            <option value="">--</option>\
            <option value="1">Option 1</option>\
            <option value="2">Option 2</option>\
            <option value="3">Option 3</option>\
            <option value="4">Option 4</option>\
            <option value="5">Option 5</option>\
          </select>';
 
    // Hide the text input
    $('#question'+qID+' .question-item:eq('+(inputNum-1)+') input[type="text"]').hide();
 
    // Insert the select elements
    if($('#question'+qID+' .question-item:eq('+(inputNum-1)+') select').length == 0) {
      $('#question'+qID+' .question-item:eq('+(inputNum-1)+') input[type="text"]').before(prov1);
    }    
 
    // Initially select an option if the question has already been answered
    $('#question'+qID+' select').each(function(i) {
      if($.trim($(this).next('input[type="text"]').val()) != '') {
        $(this).val($.trim($(this).next('input[type="text"]').val()));
      }
    });
 
    // Listener on the dropdowns - insert selected values into hidden text input
    $('#question'+qID+' select').change(function() {
      var thisInput = $(this).next('input[type="text"]');
      $(thisInput).val($(this).val());
      checkconditions($(thisInput).attr('value'), $(thisInput).attr('name'), 'text');
    });
 
    // Some styles
    $('#question'+qID+' select').css({
    'margin':'0.3em 0 0 0',
        'width':'30%'
    });
  });
 
 
  $(document).on('ready pjax:complete',function()  {
    var qID = {QID};    
    var inputNum = 5;
 
    // Define the select element (dropdown)
    var prov2 = '<select id="prov2" class="form-control">\
            <option value="">--</option>\
            <option value="1">Eine andere Option 1</option>\
            <option value="2">Eine andere Option 2</option>\
            <option value="3">Eine andere Option 3</option>\
          </select>';
 
    // Hide the text input
    $('#question'+qID+' .question-item:eq('+(inputNum-1)+') input[type="text"]').hide();
 
    // Insert the select elements
    if($('#question'+qID+' .question-item:eq('+(inputNum-1)+') select').length == 0) {
      $('#question'+qID+' .question-item:eq('+(inputNum-1)+') input[type="text"]').before(prov2);
    }    
 
    // Initially select an option if the question has already been answered
    $('#question'+qID+' select').each(function(i) {
      if($.trim($(this).next('input[type="text"]').val()) != '') {
        $(this).val($.trim($(this).next('input[type="text"]').val()));
      }
    });
 
    // Listener on the dropdowns - insert selected values into hidden text input
    $('#question'+qID+' select').change(function() {
      var thisInput = $(this).next('input[type="text"]');
      $(thisInput).val($(this).val());
      checkconditions($(thisInput).attr('value'), $(thisInput).attr('name'), 'text');
    });
 
    // Some styles
    $('#question'+qID+' select').css({
    'margin':'0.3em 0 0 0',
        'width':'30%'
    });
  });
 
</script>
Eigentlich ist es dasselbe script zweimal hintereinander;
zunächst für die vierte Teilfrage. (Dies musst Du natürlich anpassen, falls Du das Dropdown in einer anderen Teilfrage einsetzt)
var inputNum = 4;

Hier musst Du dann Deine Optionen eintragen.
// Define the select element (dropdown)
var prov1 = '<select id="prov1" class="form-control">\
<option value="">--</option>\
<option value="1">Option 1</option>\
<option value="2">Option 2</option>\
<option value="3">Option 3</option>\
<option value="4">Option 4</option>\
<option value="5">Option 5</option>\
</select>';

Hier wird noch etwas "Schönheit" gemacht
// Some styles
$('#question'+qID+' select').css({
'margin':'0.3em 0 0 0',
'width':'30%'
});

Wichtig die "width". Ich habe sie auf 30% gesetzt. Solltest Du anpassen, damit das Dropdown nicht riesig breit mit ganz kurzen Antwortmöglichkeiten ist, und auch nicht umgekehrt.

Und dann kommt dasselbe noch einmal für die 5. Teilfrage
var inputNum = 5;

// Define the select element (dropdown)
var prov2 = '<select id="prov2" class="form-control">\
<option value="">--</option>\
<option value="1">Eine andere Option 1</option>\
<option value="2">Eine andere Option 2</option>\
<option value="3">Eine andere Option 3</option>\
</select>';


Gespeichert werden übrigens die "values". Aber deswegen machen wir das Ganze ja auch.

Insgesamt bekommen wir dann dies:




Das war alles.


Jetzt noch etwas Grundsätzliches aus eigener Erfahrung.
Hast Du schon einmal überlegt, wie die Daten am Ende aussehen?
Nehmen wir einmal 4 Teilnehmer mit ihren Medikamente-Nennungen
1. "Aspirin", "Ibuprofen", "Makumar", "ACC"
2. "Paracethamol", "ACC-akut", "Ibuprofen"
3. "Makumar", "ASS", Blopress", "Ibuprofen"
4. "Blutdrucksenker", "Hustenlöser"

Hier taucht "Ibuprofen" einmal in der zweiten, einmal in der dritten und einmal in der vierften Spalte auf; die Folgefragen zu diesem Medikament verstreuen sich genauso im datensatz.
Dann gibt darüberhinaus verschiedenen Benennungen und eben diese Oberbegriffe.
Es ist wirklich eine Pest, dies alles zu kodieren und schlussendlich im Datensatz zu sortieren, damit in jeder Tabellenspalte die Daten zu einem Medikament stehen. (gut, das Letzte kann ein EXCEL-Makro machen)
Ich hatte diesen Spaß einmal in einer Medizinstudie mit "nur" 3 möglichen freien Nennungen zusätzlich zu den Precodes.

Bedenke dies, und überlege, ob man im Vorfeld hier etwas kanalisieren kann (z.B. durch Precodes).

Und noch etwas Empfehlenswertes:
LimeSurvey verfügt leider nicht über eine sinnvolle Trennung von logischem und visuellem Layout.
Soll heißen, Du musst entscheiden, ob Du "Frage für Frage", "Gruppe für Gruppe" oder "Alles auf einer Seite" darstellst.

Und ein Problem taucht auf, wenn Du Fragenpaare in unterschiedlicher (zufälliger) Reihenfolge anzeigen willst (jedes Paar aber immer zusammenbleiben soll).
Umgekehrt gibt es javascript-workarounds, die eine zweite Frage in die erste hineinziehen (als berüchtigtes Beispiel: "Sonstige" am Ende einer Itembatterie). Diese müssen dann beide in einer Gruppe und gleichzeitig auf dem Bildschirm sein, obwohl man "Frage für Frage" darstellen will.

Daher ist unsere Empfehlung.
Man wählt "Gruppe für Gruppe", erstellt aber in jeder Gruppe nur eine Frage.
Dann ist der visuelle Eindruck zunächst "Frage für Frage", man hat aber trotzdem die Möglichkeit, einmal zwei Fragen auf einer Seite anzuzeigen und auch die Möglichkeint gewisse workarounds überhaupt anzuwenden.


So, das ist jetzt alles für heute.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Christine255
The topic has been locked.
More
4 years 9 months ago #209252 by Christine255
Hallo Joffm,

1.Buttons
Das Einfügen des Skripts hat gut geklappt. Beide Buttons sind sichtbar. Nur sehen sie bei Verwendung der btn-Klassen bei mir folgendermaßen aus (vielleicht liegts am Uni-Account?):

btn-danger


btn-success


btn-info


btn-warning: Dort erscheint erst gar kein Text. Sobald man mit der Maus über das Feld fährt, erscheint ein roter Text



btn-primary sieht wie in deinem Beispiel aus. Aktuell habe ich mich für primary bei dem [+]Medikamente-Button und danger bei dem [-]Medikamente-Button entschieden. Das wäre für mich völlig in Ordnung. Wenn es aber doch möglich ist, die Buttons in deinen Farben darzustellen, nehme ich natürlich lieber die ;)


2. und 3. Anzeige der Folgefragen und Drop-Downs

Auch das hat dank deines Skriptes und der Erklärungen super funktioniert! Vielen lieben Dank!


Tatsächlich überlege ich, ob es nicht Sinn machen würde, bei der Teilfrage zur Dosierung zuerst ein Zahlenfeld und dahinter die Drop-Down-Box zu setzen. So könnte der Teilnehmer, der beispielsweise 600mg Ibuprofen einnimmt, in das Zahlenfeld 600 eintippen und aus der Drop-Down-Box die jeweilige Einheit, hier "mg" auswählen. Gibts für so ein Vorhaben vielleicht auch ein Skript?


Nun zu deinen Hinweisen:

Da ich ein absoluter Neuling bei Lime Survey bin, hätte ich die Daten als Excel-Tabelle exportiert und dann auswertet. Wahrscheinlich ist das aber zu einfach gedacht oder? Precodes stehen in meiner Uni-Anleitung nicht mal drin... Gibts da irgendwo eine andere Anleitung zu? In den Foren arbeiten zwar viele damit, aber es wird nicht erklärt was da ist und wie man es einsetzt.


Auch das behalte ich im Hinterkopf. Danke für den Hinweis!

Allerletzte Frage für heute bzw. eine Frage, die ich auch gerne in einem neuen Thread stelle (einfach kurz Bescheid geben): Ich habe in den Foren gelesen, dass es über "Umfrage Quoten" die Möglichkeit gibt bei bestimmten Antworten, z.B. ja/nein, die Umfrage beenden zu lassen. Bei meiner Umfrage wird zunächst mit zwei ja/nein-Fragen überprüft, ob der Teilnehmer weiter an der Umfrage teilnehmen darf. Mir ist klar, dass beim "Limit" eine 0 stehen muss. Aber was tippe ich in das Feld "Quoten-Namen" ein?

Beste Grüße
Christine
The topic has been locked.
More
4 years 9 months ago - 4 years 9 months ago #209262 by Joffm
Hallo, Christine,
nur ganz kurz vor dem Frühstück:

Ich hatte ja geschrieben,
"In der Standardeinstellung sind es diese Farben"
bootstrap ist natürlich anpassbar, einige Variationen findest Du hier.
bootswatch.com/
unter "Themes".
Ändern der Farben geht natürlich, aber es ist mehr Arbeit als es lohnt.
Es gibt ja sehr viele Zustande eines Buttons:
"jungfräulich", "gedrückt", "mit der Maus überstrichen", "gedrückt und mit der Maus überstrichen", ...
Für diese alle müsstest Du Farben definieren.

Und "btn-primary" hat ja dieselbe Farbe wie der "Weiter"-Button. Ist doch in Ordnung, da es auch eine gewisse Einheitlichkeit darstellt.



2. Zu Quoten mache bitte einen neuen Thread auf.

Joffm


Interessehalber:
Welchen Browser benutzt Du?

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 4 years 9 months ago by Joffm.
The topic has been locked.
Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose