Welcome to the LimeSurvey Community Forum

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

Array dual scale - make one answer scale not mandatory

  • firzen
  • firzen's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
10 years 1 month ago - 10 years 1 month ago #103929 by firzen
Is it possible to make one of the answer scales non mandatory? I have a 1 to 5 scale and the other scale will have a single optional answer option in it. I originally had a not applicable answer option in the second scale but users found it annoying to select two options for the 24 sub-questions
Last edit: 10 years 1 month ago by firzen.
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
10 years 1 month ago #103944 by tpartner
You can't really make one answer non-mandatory and the problem with only providing one option for that scale is that if respondents mistakenly click it, they cannot un-click it.

I would keep the "N/A" option in the second scale and insert some JavaScript to click that option by default.

Add this script to the source of the array:

Code:
<script type="text/javascript" charset="utf-8">  
 
  $(document).ready(function() {
 
    // Identify this question
    var thisQuestion = $('#question{QID}');
 
    // Identify the second scale answers
    $('.answer-item[class^="answer_cell_2"]', thisQuestion).addClass('scale-2-item');
 
    // Set a default answer for the second scale
    $('.answers-list', thisQuestion).each(function(i) {
      if($('.scale-2-item input[type="radio"]:checked', this).length == 0) {
        $('.scale-2-item input[type="radio"]:last', this).click();
      }
    });
  });
 
</script>

.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
  • firzen
  • firzen's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
10 years 1 month ago #103982 by firzen
Thanks for this, but i can't seem to get the script working. Where exactly do i place the script? i tried putting it inside the not applicable answer option source and it didn't work. Was it suppose to go somewhere else? And i changed the QID to the relevant id.
The topic has been locked.
  • firzen
  • firzen's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
10 years 1 month ago #103989 by firzen
Got it working, just had to remove the comments.
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
10 years 1 month ago - 10 years 1 month ago #104001 by tpartner
The script should be placed in the source of the array QUESTION TEXT.

If placed there, you will not need to replace "{QID}" and should not need to remove the comments.

.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last edit: 10 years 1 month ago by tpartner.
The topic has been locked.
  • Mazi
  • Mazi's Avatar
  • Offline
  • Official LimeSurvey Partner
  • Official LimeSurvey Partner
More
10 years 1 month ago #104009 by Mazi
Great solution, Tony.

Did you already add this to the workaround section? Might be really useful for others!

Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
10 years 1 month ago #104103 by tpartner
I have added this to the workarounds with an improved script that allows selecting either scale and a column of that scale to be default - manual.limesurvey.org/Workarounds:_Manip...scale_Array_Question .

Code:
<script type="text/javascript" charset="utf-8">  
 
  $(document).ready(function() {
 
    // Scale to set the default answer on
    var defaultAnsweredScale = 2; 
    // Column of that scale to set as default answer
    var defaultAnsweredColumn = 3;
 
    // Identify this question
    var thisQuestion = $('#question{self.qid}');
 
    // Identify the scales and columns
    $('.answer-item[class^="answer_cell_1"]', thisQuestion).addClass('scale-1-item');
    $('.answer-item[class^="answer_cell_2"]', thisQuestion).addClass('scale-2-item');
    $('tr.answers-list', thisQuestion).each(function(i) {
      $('.scale-1-item', this).each(function(i) {
        $(this).addClass('scale-1-column-'+(i+1)+'-item');
      });
      $('.scale-2-item', this).each(function(i) {
        $(this).addClass('scale-2-column-'+(i+1)+'-item');
      });
    });
 
    // Click the default answers
    $('tr.answers-list', thisQuestion).each(function(i) {
      if($('.scale-'+defaultAnsweredScale+'-item input[type="radio"]:checked', this).length == 0) {
        $('.scale-'+defaultAnsweredScale+'-column-'+defaultAnsweredColumn+'-item input[type="radio"]:last', this).click();
      }
    });
  });
</script>

Sample survey:

File Attachment:

File Name: dual_scale...wers.lss
File Size:20 KB


.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
  • Mazi
  • Mazi's Avatar
  • Offline
  • Official LimeSurvey Partner
  • Official LimeSurvey Partner
More
10 years 1 month ago #104105 by Mazi
Thanks a lot!

Best regards/Beste Grüße,
Dr. Marcel Minke
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
The topic has been locked.
More
8 years 11 months ago #118779 by Tascja
Hi Tony,
Your solution to the problem is what I am looking for. I have a dual array scale (first is quantity and second is frequency) and would like it to be automatic that when someone selects none for quantity, never in frequency is automatically selected.
Here is my problem: I cannot use JavaScript. The administrators would like to avoid activating this feature.
Do you know if there is a way to accomplish this same thing but with Expression Manager and/or equations?

Thanks in advance for your help :)
The topic has been locked.
  • tpartner
  • tpartner's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 years 11 months ago #118780 by tpartner
No, sorry, I don't know of any way to do it with EM.

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