Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Dropdownlist as a subquestion depending on first dropdown question

Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 7 Monate her #85219

  • hakan
  • hakans Avatar
  • OFFLINE
  • Fresh Lemon
  • Beiträge: 1
  • Karma: 0
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 7 Monate her #85220

  • holch
  • holchs Avatar
  • OFFLINE
  • LimeSurvey Team
  • Beiträge: 2444
  • Dank erhalten: 254
  • Karma: 94
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.
Have a look at the manual! It is a really valuable source for information. Here some helpful links:
Manual (EN) | Question Types | Question Attributes | Workarounds

If you found this answer helpful and it saved you some time please consider a donation to the project to keep Limesurvey going!
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 7 Monate her #85276

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5838
  • Dank erhalten: 714
  • Karma: 222
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 5 Monate her #88128

  • lfortunato
  • lfortunatos Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 38
  • Dank erhalten: 1
  • Karma: 1
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 :)
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 5 Monate her #88139

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5838
  • Dank erhalten: 714
  • Karma: 222
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.
Letzte Änderung: 1 Jahr 4 Monate her von DenisChenu.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 4 Monate her #88596

  • lfortunato
  • lfortunatos Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 38
  • Dank erhalten: 1
  • Karma: 1
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_survey_22769.lss
Dateigröße: 26 KB


selectfilter.js
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 4 Monate her #88597

  • lfortunato
  • lfortunatos Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 38
  • Dank erhalten: 1
  • Karma: 1
...here is the second file attached

selectfilter.js
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 4 Monate her #88604

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5838
  • Dank erhalten: 714
  • Karma: 222
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
Letzte Änderung: 1 Jahr 4 Monate her von DenisChenu.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: lfortunato

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 4 Monate her #88647

  • lfortunato
  • lfortunatos Avatar
  • OFFLINE
  • Junior Lime
  • Beiträge: 38
  • Dank erhalten: 1
  • Karma: 1
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!!!
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Re: Dropdownlist as a subquestion depending on first dropdown question 1 Jahr 4 Monate her #88665

  • DenisChenu
  • DenisChenus Avatar
  • OFFLINE
  • Moderator Lime
  • Beiträge: 5838
  • Dank erhalten: 714
  • Karma: 222
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: ITEd
Ladezeit der Seite: 0.184 Sekunden
Donation Image