Welcome to the LimeSurvey Community Forum

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

Antworten mit Subgruppen/Untergruppen

  • sophia_ger
  • sophia_ger's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 11 months ago - 2 years 11 months ago #215425 by sophia_ger
Antworten mit Subgruppen/Untergruppen was created by sophia_ger
Hallo allerseits!

Ich suche nach einer Möglichkeit bei meinen Antwortmöglichkeiten einer Frage vom Typ "Liste (Optionsfelder)" Subgruppen bzw. Untergruppen erstellen zu können. Das Ganze habe ich mir so vorgestellt:

Frage: Welche Ausbildung haben Sie?

Antwort:
  • Facharzt für Allgemeinmedizin
  • Facharzt für Dermatologie
  • Facharzt für Innere Medizin
    • Hämatologie und Onkologie
    • Gastroenterologie
    • Kardiologie
    • Nephrologie
Ich möchte also, dass jemand der den Punkt 'Facharzt für Innere Medizin' anklickt ebenso eine Spezifizierung angeben muss. Dabei ist es mir nicht wichtig, ob die Unterpunkte bereits von Anfang an sichtbar sind oder dies erst werden wenn jemand 'Facharzt für Innere Medizin' anklickt.

Vielen Dank für eure Hilfe!

PS: Ich nutze die Version 3.22.1+200129.
 
Last edit: 2 years 11 months ago by sophia_ger.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 11 months ago #215429 by Joffm
Replied by Joffm on topic Antworten mit Subgruppen/Untergruppen
Hallo,
gut, das können wir machen.
 



Wenn Du so codierst, 
 
und Du diese Zeilen im script siehst,
            , // First-level sub-question codes 
             // Second-level sub-question codes

wird Dir schnell klar, wie es funktioniert.

Dazu fügst Du folgendes javascript und auch das css Stückchen in den Fragetext ein (im Quellcode-Modus) (immer vorausgesetzt, Du hast die Rechte dazu)
Code:
<script type="text/javascript" charset="utf-8">
    
    
    // A function to handle "child" checkboxes
    function dependantCheckboxes(qID, primaryCodes, secondaryCodes) {
        // Identify the elements annd assign classes/attributes
        var thisQuestion = $('#question'+qID);
        thisQuestion.addClass('with-dependants');
        $.each(primaryCodes, function(i, val) {
            var thisItem = $('li[id$="X'+qID+val+'"]');
            $(thisItem).addClass('level-1 parent-item').attr('data-code', val).attr('data-level', '1');
        });    
        $.each(secondaryCodes, function(i, val) {
            var thisItem = $('li[id$="X'+qID+val+'"]');
            var thisParent1 = $(thisItem).prevAll('li[data-level="1"]:eq(0)');
            $(thisItem).addClass('level-2 parent-item child-item').attr('data-code', val).attr('data-level', '2').attr('data-parent-1', $(thisParent1).attr('data-code'));
        });    
        
        // A function to handle the states of child items
        function handleChildren(el) { 
            var thisitem = $(el).closest('li');
            var thisCode = $(thisitem).attr('data-code');
            var thisLevel = $(thisitem).attr('data-level');
            var thisChildren = $('li[data-level="'+(Number(thisLevel)+1)+'"][data-parent-'+thisLevel+'="'+thisCode+'"]', thisQuestion);
            
            // Hide/show the secondary answers accordingly
            if (!$(el).is(':checked')) {
                $(thisChildren).fadeOut(300, function(e) {            
                    $('input:checkbox', thisChildren).prop('checked', false).trigger('change');
                });    
            }
            else {
                $(thisChildren).fadeIn(300); 
            }
        }
        
        // Initial states of the secondary answers 
        $('.parent-item input:checkbox', thisQuestion).each(function(i) { 
            handleChildren($(this));
        });
        
        // A listener on the primary answer to show or hide secondary answers 
        $('.parent-item input:checkbox', thisQuestion).on('change', function(e) { 
            handleChildren($(this));
        });
    }
 
 
    $(document).on('ready pjax:scriptcomplete',function(){
        dependantCheckboxes(
            {QID}, 
            ['SQ1', 'SQ2', 'SQ3'], // First-level sub-question codes 
            ['SQ31','SQ32','SQ33', 'SQ34'] // Second-level sub-question codes
        );
    });      
</script>
Code:
<style type="text/css">.with-dependants .child-item {
            display: none;
        }
        
        .with-dependants li.level-2 {
            margin-left: 2.5em;
        }
        
        .with-dependants li.level-3 {
            margin-left: 5em;
        }
</style>

Viel Erfolg

Joffm


PS.
Kurze Frage am Schluss:
Woher kommen denn diese ganzen "Style Definitions"?

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: sophia_ger
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 11 months ago #215451 by Joffm
Replied by Joffm on topic Antworten mit Subgruppen/Untergruppen
Was ich wieder übershen habe, da es für mich ganz selbstverständlich war:
Das geht natürlich nicht mit einem "Liste(Optionsfelder)".
Du hast ja zwei Nennungen in der Frage.
Daher ist dies eine Mehrfachnennung.
Du musst dann entsprechend validieren, dass nur eine der übrigen Nennungen angekreuzt wird, und falls "Innere" auch eine Untergruppe der angekreuzt wird.
Zum Beispiel könntest Du "Allgemein" und "Derma" als exclusive Option anlegen.

Und als Validierung wäre so etwas ganz nett (für "self", usw. lies bitte im Handbuch 
[url] manual.limesurvey.org/ExpressionScript_-...#.22Self.22_variable [/url]

Jedenfalls bedeutet dieses hier: Zähle alle ausgewählten Teilfragen, wo im Fragecode "SQ3" auftaucht; also "SQ3", "SQ31", "SQ3Fitzliputzli", usw.
Frage-Validierungsgleichung:
(count(self.sq_SQ3.NAOK)==0) OR (count(self.sq_SQ3.NAOK)==2)

Und als Validierungshinweis:
{if(count(self.sq_SQ3.NAOK)==1,"Bitte, wählen Sie eine Fachrichtung der Inneren aus",if( count(self.sq_SQ3.NAOK)>2,"Bitte nur eine Fachrichtung der Inneren auswählen!",""))}

   

 



Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: sophia_ger
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 11 months ago #215463 by holch
Replied by holch on topic Antworten mit Subgruppen/Untergruppen
Oder einfach zwei Fragen drauss machen und die Folgefrage zu den Subspezialitäten halt per Relevanzgleichung ein-/ausblenden.

Fände ich sowieso "sauberer".

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The following user(s) said Thank You: sophia_ger
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 11 months ago #215474 by Joffm
Replied by Joffm on topic Antworten mit Subgruppen/Untergruppen
Klar, das ist der Standard.
Diese 2-Level-Lösung hat halt etwas mehr appeal.
Bringt einfach einmal ein bisschen Abwechslung für den Teilnehmer.
So viele Umfragen, die ich hier sehe, sind so etwas von langweilig (look&feel), dass jedes bisschen Gamification willkommen ist. 

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 11 months ago #215475 by holch
Replied by holch on topic Antworten mit Subgruppen/Untergruppen
Naja, ob jetzt diese Untergruppe die Umfrage attraktiver macht, darüber lässt sich streiten. Hahahaha.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • sophia_ger
  • sophia_ger's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 11 months ago #215627 by sophia_ger
Replied by sophia_ger on topic Antworten mit Subgruppen/Untergruppen
Hallo ihr zwei! 

Vielen Dank für eure Tips und die Hilfe! Ich musste mich erstmal noch weiter in die Thematik einlesen und hab dann ein bisschen herumprobiert. Den Vorschlag von Joffm habe ich leider nicht ordentlich geschafft umzusetzen, jedoch hat der Tipp mit den Relevanzgleichungen von holch gut funktioniert. 

Herzlichen Dank nochmal! 
The topic has been locked.
  • sophia_ger
  • sophia_ger's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 11 months ago #215628 by sophia_ger
Replied by sophia_ger on topic Antworten mit Subgruppen/Untergruppen
Die style definitions sind mir anfangs gar nicht aufgefallen, hab sie inzwischen rausgelöscht. Vermute das kam daher, dass ich die limesurvey Version reinkopiert habe und dabei auch noch was anderes mitgerutscht ist :D
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose