Dropdownlist as a subquestion depending on first dropdown question

Mehr
6 Jahre 9 Monate her #85219 von hakan
I would like to have two question like dropdown.

The answer of the first one (you will be able to choose among apr. 100 preeschool) will determine the answering options in the second dropdownlist, which will be max 6 options of departments per preeschool - but of course varying depending on which preeschool that have been choosen in first dropdown.

Yout can see the function here which i've made myself in html and java.

www2.sundsvall.se/enkat/Bou2012/barnomsorgsenkat2012.html

How do you solve that in Limesurvey? I've tried to search but have not found a descent solution.

Thanks in advance!

/Håkan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

LimeSurvey Partners
Mehr
6 Jahre 9 Monate her #85220 von holch
You can probably solve this with a custom Javascript, which is probably the best solution when the first dropdown offers many choices.

I solved it once with conditions and different second questions.

In your case that would be probably quite some work.

I'm not a LimeSurvey GmbH member. I answer at the LimeSurvey forum in my spare time. No support via private message.
Some helpful links: Manual (EN) | Question Types | Workarounds

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 9 Monate her #85276 von DenisChenu
Hello,

You can use some javascript function:
/* Function to filter a select by another select 
   In the same page
   var qID : the numer of question to filter 
   var filterqID : the number of question filtering
*/
function selectFilterByCode(qID,filterqID){
  $(document).ready(function(){
    var idSelectFilter = $("#question"+qID).find("select").attr('id');
    $("#"+idSelectFilter).hide();
    var idSelectFiltering = $("#question"+filterqID).find("select").attr('id');
    if(typeof idSelectFilter === 'undefined' || typeof idSelectFiltering === 'undefined' )
    { 
      return false;
    }
    else
    {
      var idNewSelectFilter = 'select'+qID
      var NewSelectElement = "<select id='"+idNewSelectFilter+"'><option value=''>"+$("#"+idSelectFilter+" option[value='']:first").text()+"</option></select>";
      $("#"+idSelectFilter).after(NewSelectElement);
      $("#"+idNewSelectFilter).width($("#"+idSelectFilter).width());
      $("#"+idSelectFiltering).change(function(){
        $('#'+idSelectFilter).val('');
        $('#'+idNewSelectFilter).val('');
        var valuefilter=$(this).val();
        $('#'+idNewSelectFilter+' option').not(':first').remove();
        $('#'+idSelectFilter+' option').each(function(){
          if($(this).attr('value').indexOf(valuefilter)==0){
            $(this).clone().appendTo('#'+idNewSelectFilter);
          }
        });
      });
 
      $("#"+idNewSelectFilter).change(function(){
        $('#'+idSelectFilter).val($(this).val());
      });
 
      if($("#"+idSelectFiltering).val()!=''){
        var valuefilter=$("#"+idSelectFiltering).val();
        $('#'+idSelectFilter+' option').each(function(){
          if($(this).attr('value').indexOf(valuefilter)==0){
            $(this).clone().appendTo('#'+idNewSelectFilter);
          }
        });
        if($("#"+idSelectFilter).val()!=''){
           $('#'+idNewSelectFilter).val($("#"+idSelectFilter).val());
        }
      }
    }
  });
}

And use it like that in your survey:
<script type="text/javascript" charset="utf-8">
selectFilterByCode(qID,filterqID);
</script>
wher qID is the question to filter and filterqID the filtering question.

The script is here:
demonstration.sondages.pro/upload/templa...nade/selectfilter.js

The filter is done on the "sub question" code: for example: is the filterqID hare A then the qID show A1,A2,A233 ....

You can see a demo here:
demonstration.sondages.pro/82885/lang-fr (sorry in french)

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand .
An error happen ? Before make a new topic : remind the Debug mode .

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 7 Monate her #88128 von lfortunato
Hello Denis!

Your solution is really good,
I've just tried the Demo and it works exactly like I would.
I would like to ask you some questions on that...thank you in advance!

I have one first question with type List (dropdown)
with a Category separator (:)
and Question Code = FATH


Answer options
Code Description
A Customer1:Healthy Life
B Customer1:Smart Cities
C Customer1:Alternative energy
D Customer2:Microtechnologies
E Customer2:Nanotechnologies
F Customer3:Innovation


The second question with type List (dropdown)
and Question Code = CHILD

Answer options
Code Description
A1 healthy_food
A2 eating_habits
A3 lifestyle
B1 new_cities
B2 ecological_cities
B3 green_areas
C1 solar_panels
C2 new_fuels
D1 microtech
D2 lithography
D3 optical_lithografy
E1 nanotech
F1 inn_forpeople
F2 inn_forenv

The second question (CHILD) has to display different elements in the dropdown,
based on the previous choice, for example

SELECTED (in the first dropdown)
A Customer1:Healthy Life

THEREFORE WILL BE SHOWN (in the second dropdown)
A1 healthy_food
A2 eating_habits
A3 lifestyle

Following this example, I just need 2 questions dropdown type
instead of 7 questions with conditions for hiding/showing each of them.
Is that correct?

Then I have to put selectfilter.js
in the correct directory, for example
/template/citronade
if I'm using the citronade template.


Regarding the function call
<script type="text/javascript" charset="utf-8">
selectFilterByCode(qID,filterqID);
</script>

where do I have to put this?

Perhaps I have to put the call in the first dropdown question,
in the 'Relevance' field?

Many thanks for all your work :)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 7 Monate her - 6 Jahre 6 Monate her #88139 von DenisChenu
You can do something like that in the 2nd questions source (without xssfilter)
<script type='text/javascript' src='{TEMPLATEURL}selectfilter.js'></script>
<script type="text/javascript" charset="utf-8">
selectFilterByCode({QID},filterqID);
</script>
If you put the js file in the template, just replace filterqID by the number of the 1st question.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand .
An error happen ? Before make a new topic : remind the Debug mode .
Letzte Änderung: 6 Jahre 6 Monate her von DenisChenu.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her #88596 von lfortunato
Dear Denis, after many trials still doesn't work :(

Attached you'll find my survey example with only the two questions, one dropdown 'father' question
and one dropdown 'children' question.

I've also attached the file selectfilter.js (the same you posted) , which I've put into the server directory
/templates/bluegrey
because I'm using this kind of template for the survey.

If you have any suggestion... really many thanks to you :)


Dateianhang:

Dateiname: limesurvey...2769.lss
Dateigröße:26 KB


selectfilter.js
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her #88597 von lfortunato
...here is the second file attached

selectfilter.js

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her - 6 Jahre 6 Monate her #88604 von DenisChenu
Hello,

I made an error for the inclusion ,
<script type='text/javascript' src='{TEMPLATEURL}selectfilter.js'></script>
and not
<script type='text/javascript' src='{TEMPLATEURL}jqury-ui.js'></script>

Can i have a link for the survey ? It's impossible to see why it's not work without testing.

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand .
An error happen ? Before make a new topic : remind the Debug mode .
Letzte Änderung: 6 Jahre 6 Monate her von DenisChenu.
Folgende Benutzer bedankten sich: lfortunato

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her #88647 von lfortunato
At last, it works! :) :) :)

I want to thank very much Denis for his helpfulness and kindness.
Now It works also with the category separator, and this is exactly what I needed to do!
Good job to all the Limesurvey team!!!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her #88665 von DenisChenu

lfortunato schrieb: At last, it works! :) .... It works also with the category separator,

Great news !

If you have some times to put this workaround on our documentation, it can be great :
docs.limesurvey.org/tiki-index.php?page=...ime+using+Javascript

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand .
An error happen ? Before make a new topic : remind the Debug mode .

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her #88943 von Mazi

lfortunato schrieb: At last, it works! :) :) :)

I want to thank very much Denis for his helpfulness and kindness.
Now It works also with the category separator, and this is exactly what I needed to do!
Good job to all the Limesurvey team!!!

You're welcome :-)

If our hints have been helpful and you enjoy limesurvey please consider a donation to give Limesurvey a future .
We do all this in our free time and you don't have to pay a penny for this software.

Without your help we can't keep this project alive.

Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)survey-consulting.com
Want to use your survey offline -> www.offlinesurveys.com

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 6 Monate her #88961 von lfortunato
You are right, Mazi...
I have already said to my boss that a donation would be important for LS team and certainly for us, as users...

Many thanks to all you :)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
6 Jahre 4 Monate her #92203 von Gormack
Thank you for your nice solution above.
For those who wants to link more than 2 dropdown lists (list3 link to list2 link to list1) see below the small changes to apply into the code


$("#"+idSelectFilter).after(NewSelectElement);

to b replaced by

$("#"+idSelectFilter).before(NewSelectElement);

Thanks

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Jahre 11 Monate her #97375 von Gabriela
HI,
Im trying to achieve this but I cant make it work.
3 droplists,

1. Droplist 1
2. Droplist 2
3. Droplist 3

Droplist 2 depends on droplist 1
Droplist 3 depends on droplist 2

How can I adapt the code and / or implementation to achieve this?
thanks a lot.
Gabi

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
5 Jahre 11 Monate her #97383 von Gabriela
And last question..

Im trying to retrieve the answer from the droplists, using INSERTANS , but its not possible as the select created with the java script has a different type of code (select3111)
is it possible to retrive the answer by other means?

thanks!!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Jetzt loslegen!

Melden Sie sich jetzt an, und erstellen Sie in wenigen Minuten Ihre erste Umfrage.

Account einrichten

Abonnieren Sie unseren Newsletter

Abonnieren Sie unseren Newsletter für alle Neuigkeiten rund um LimeSurvey
captcha