Welcome to the LimeSurvey Community Forum

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

Mandatory rows and default values in array with drop down menu

  • supernul
  • supernul's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago #153802 by supernul
Hello everybody,


I have 2 questions about the array with drop down menu:
- I would like to make some rows mandatory (rows 1, 4 and 10) but I am not able to correctly modify a code I found so it do not works
- I would like to make the default value of the other rows (2,3 and 5,6,7,8,9 and 11,12,13) take "as transportation" (or "as build-up" or "semi-natural") instead of "..."

I join my question with what I was able to do.

Thank you for your help.
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago - 6 years 10 months ago #153827 by tpartner
I don't think you need to worry about mandatory rows if you set default answers in the other rows. If the question is set to "mandatory", the non-defaulted rows will automatically be required.

Try something like this (you will need to change the values for the defaults):

Code:
<script type="text/javascript" charset="utf-8">
  $(document).ready(function(){
    // Insert new dropdown values
    $('#question{QID} .answer_cell_SQ001 option[value=0]').text('not involved');
    $('#question{QID} .answer_cell_SQ001 option[value=1]').text('partially involved');
    $('#question{QID} .answer_cell_SQ001 option[value=2]').text('always involved');
 
    $('#question{QID} .answer_cell_SQ002 option[value=0]').text('not involved');
    $('#question{QID} .answer_cell_SQ002 option[value=1]').text('partially involved');
    $('#question{QID} .answer_cell_SQ002 option[value=2]').text('always involved');
 
    $('#question{QID} .answer_cell_SQ003 option[value=0]').text('not involved');
    $('#question{QID} .answer_cell_SQ003 option[value=1]').text('partially involved');
    $('#question{QID} .answer_cell_SQ003 option[value=2]').text('always involved');
 
    $('#question{QID} .answer_cell_SQ004 option[value=0]').text('No practice in ');
    $('#question{QID} .answer_cell_SQ004 option[value=1]').text('Short-term experience in ');
    $('#question{QID} .answer_cell_SQ004 option[value=2]').text('Long-term experience in ');
 
    $('#question{QID} .answer_cell_SQ005 option[value=0]').text('was not achieved');
    $('#question{QID} .answer_cell_SQ005 option[value=1]').text('was partially achieved');
    $('#question{QID} .answer_cell_SQ005 option[value=2]').text('was fully achieved');
 
    $('#question{QID} .answer_cell_SQ006 option[value=0]').text('was weak');
    $('#question{QID} .answer_cell_SQ006 option[value=1]').text('was medium');
    $('#question{QID} .answer_cell_SQ006 option[value=2]').text('was strong');
 
    // Define rows to have default answers
    var defaultedRows = [2,3,5,6,7,8,9,11,12,13];
 
    // Loop through all "defaulted" rows and set default answers
    $(defaultedRows).each(function(i, value) {
      // Column 1
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0)').val(0);
      // Column 2
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1)').val(1);
      // Column 3
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2)').val(2);
      // Column 4
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3)').val(0);
      // Column 5
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4)').val(1);
      // Column 6
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5)').val(2);
    });
  });
</script>

Here's your sample question back with those modifications:

File Attachment:

File Name: limesurvey...7395.lsq
File Size:16 KB

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last edit: 6 years 10 months ago by tpartner.
The topic has been locked.
  • supernul
  • supernul's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago #153837 by supernul
Thank you for your answer. It is not exactly what I am looking for but it gives me ideas even if they do not work. I still try.
Code:
<p><strong>Fill the following table with proposal of the drop down menu</strong>.</p>
 
<p><em>You can fill the transportation, build-up area and (semi-)natural lines only (corresponding unfilled sublines will be considered taken the same values) or fill the sublines too (one or several cells) to distinguish values.</em>></p>
 
<p>For instance, <em>interest groups</em> can be partially involved about the development of <em>build-up area</em> but you can specify that they are always involved <em>about industrial activity</em> and <em>commerce/services</em>.</p>
<script type="text/javascript" charset="utf-8">
  $(document).ready(function(){
    // Insert new dropdown values
    $('#question{QID} .answer_cell_SQ001 option[value=0]').text('not involved');
    $('#question{QID} .answer_cell_SQ001 option[value=1]').text('partially involved');
    $('#question{QID} .answer_cell_SQ001 option[value=2]').text('always involved');
 
    $('#question{QID} .answer_cell_SQ002 option[value=0]').text('not involved');
    $('#question{QID} .answer_cell_SQ002 option[value=1]').text('partially involved');
    $('#question{QID} .answer_cell_SQ002 option[value=2]').text('always involved');
 
    $('#question{QID} .answer_cell_SQ003 option[value=0]').text('not involved');
    $('#question{QID} .answer_cell_SQ003 option[value=1]').text('partially involved');
    $('#question{QID} .answer_cell_SQ003 option[value=2]').text('always involved');
 
    $('#question{QID} .answer_cell_SQ004 option[value=0]').text('No practice in ');
    $('#question{QID} .answer_cell_SQ004 option[value=1]').text('Short-term experience in ');
    $('#question{QID} .answer_cell_SQ004 option[value=2]').text('Long-term experience in ');
 
    $('#question{QID} .answer_cell_SQ005 option[value=0]').text('was not achieved');
    $('#question{QID} .answer_cell_SQ005 option[value=1]').text('was partially achieved');
    $('#question{QID} .answer_cell_SQ005 option[value=2]').text('was fully achieved');
 
    $('#question{QID} .answer_cell_SQ006 option[value=0]').text('was weak');
    $('#question{QID} .answer_cell_SQ006 option[value=1]').text('was medium');
    $('#question{QID} .answer_cell_SQ006 option[value=2]').text('was strong');
 
    // Define rows to have default answers
    var defaultedRows = [2,3,5,6,7,8,9,11,12,13];
    var mainRows = [1,4,10];
    var firstGroupRows = [2,3];
    var secondGroupRows = [5,6,7,8,9];
    var thirdGroupRows = [11,12,13];
 
    // Loop through all "defaulted" rows and set default answers
    $(defaultedRows).each(function(i, value) {
      // Column 1
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0)').val(3);
      // Column 2
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1)').val(3);
      // Column 3
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2)').val(3);
      // Column 4
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3)').val(3);
      // Column 5
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4)').val(3);
      // Column 6
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5)').val(3);
    });
 
    // Loop through all "main" rows and hidden value
    $(mainRows).each(function(i,value) {
      // Column 1
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0) .answer_cell_SQ001 option[value=3]').text('').hide();
      // Column 2
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1) .answer_cell_SQ002 option[value=3]').text('').hide();
      // Column 3
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2) .answer_cell_SQ003 option[value=3]').text('').hide();
      // Column 4
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3) .answer_cell_SQ004 option[value=3]').text('').hide();
      // Column 5
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4) .answer_cell_SQ005 option[value=3]').text('').hide();
      // Column 6
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5) .answer_cell_SQ006 option[value=3]').text('').hide();
    });
 
    // Loop through all "first group" rows and hidden value
    $(firstGroupRows).each(function(i,value) {
      // Column 1
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0) .answer_cell_SQ001 option[value=3]').text('as transportation infrastructure');
      // Column 2
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1) .answer_cell_SQ002 option[value=3]').text('as transportation infrastructure');
      // Column 3
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2) .answer_cell_SQ003 option[value=3]').text('as transportation infrastructure');
      // Column 4
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3) .answer_cell_SQ004 option[value=3]').text('as transportation infrastructure');
      // Column 5
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4) .answer_cell_SQ005 option[value=3]').text('as transportation infrastructure');
      // Column 6
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5) .answer_cell_SQ006 option[value=3]').text('as transportation infrastructure');
    });
 
    // Loop through all "first group" rows and hidden value
    $(secondGroupRows).each(function(i,value) {
      // Column 1
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0) .answer_cell_SQ001 option[value=3]').text('as build-up areas');
      // Column 2
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1) .answer_cell_SQ002 option[value=3]').text('as build-up areas');
      // Column 3
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2) .answer_cell_SQ003 option[value=3]').text('as build-up areas');
      // Column 4
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3) .answer_cell_SQ004 option[value=3]').text('as build-up areas');
      // Column 5
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4) .answer_cell_SQ005 option[value=3]').text('as build-up areas');
      // Column 6
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5) .answer_cell_SQ006 option[value=3]').text('as build-up areas');
    });
 
    // Loop through all "first group" rows and hidden value
    $(thirdGroupRows).each(function(i,value) {
      // Column 1
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0) .answer_cell_SQ001 option[value=3]').text('as (semi-)natural areas');
      // Column 2
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1) .answer_cell_SQ002 option[value=3]').text('as (semi-)natural areas');
      // Column 3
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2) .answer_cell_SQ003 option[value=3]').text('as (semi-)natural areas');
      // Column 4
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3) .answer_cell_SQ004 option[value=3]').text('as (semi-)natural areas');
      // Column 5
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4) .answer_cell_SQ005 option[value=3]').text('as (semi-)natural areas');
      // Column 6
      $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5) .answer_cell_SQ006 option[value=3]').text('as (semi-)natural areas');
    });
  });
</script>
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago #153838 by tpartner
Thinking about this a little more - when setting default values, you should probably put in a test to see if the drop-down was previously answers.

Code:
// Loop through all "defaulted" rows and set default answers
$(defaultedRows).each(function(i, value) {
  // Column 1
  if($('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0)').val() == '') {
    $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(0)').val(3)
  }
  // Column 2
  if($('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1)').val() == '') {
    $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(1)').val(3)
  }
  // Column 3
  if($('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2)').val() == '') {
    $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(2)').val(3)
  }
  // Column 4
  if($('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3)').val() == '') {
    $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(3)').val(3)
  }
  // Column 5
  if($('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4)').val() == '') {
    $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(4)').val(3)
  }
  // Column 6
  if($('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5)').val() == '') {
    $('#question{QID} tr.subquestion-list:eq('+(value-1)+') select:eq(5)').val(3)
  }
});

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
  • supernul
  • supernul's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 10 months ago #153870 by supernul
Thank you for your answer.
I attached a created picture of what I would obtain.

Based on your preview answers my idea would be to set the default value with the fourth value of the drop down menu and set different fourth value. For instance :

for rows 2 and 3:
- not involved
- partially involved
- always involved
- as transportation

for rows 5 to 9:
- not involved
- partially involved
- always involved
- as build-up

Is it possible?
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 years 10 months ago #153882 by tpartner
Sorry, I have given several code examples already, I don't have the time to give a new example whenever you change your mind.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.

Lime-years ahead

Online-surveys for every purse and purpose