Check out the LimeSurvey source code on GitHub!

Answers random order - partial randomization & keeping distinct answers fixed

More
3 years 5 months ago #99873 by t6nnp6nn
I would need to randomize part of the answers and keep some answers at a fixed position.

A typical example - a simple radio question that needs most of the answers randomized, but would need to have a "do not know" fixed at the bottom.

Any ideas how to do that?

I am currently considering renaming "no answer" to "don't know" in the translation.
Alternatively I could have some script rewriting the answers sortorder value on each pageload. Probably some security issues here going directly to edit databases.
Any ways to reorder distinct answers by javascript on display?

I am using multiple versions (eg. 1.92+ and the 2.00)

Please Log in to join the conversation.

More
3 years 5 months ago #99877 by tpartner

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

Please Log in to join the conversation.

More
3 years 5 months ago #99883 by t6nnp6nn
exactly what I was looking for.
excellent, thanks!

I did google for some time to find that but without luck. Thanks again.

Please Log in to join the conversation.

More
3 years 5 months ago #99887 by t6nnp6nn
have some problems implementing.

I got the "Partially Randomized Answers - Multiple Options & List (radio) questions" working
didn't work on my custom old template, but worked on default

but I can not get the "Partially Randomized Answers - Multiple Options & List (radio) questions - ENHANCED" version working (the one with multiple fixed items).

working with 1.92 build 10859.

Could anybody show a working set-up for the enhanced version??

Please Log in to join the conversation.

More
3 years 5 months ago #99908 by t6nnp6nn
found the problem

with the enhanced versiosn you should not set the random_order attribute to 1

The randomization is done with javascript. I set the random_order to 0 and it works in all versions i have now.

so as far as I understand there is a misleading manual - this should not be done with the enhanced version:

"Set the random_order question attribute to 1."

Please Log in to join the conversation.

More
3 years 1 month ago #103531 by LloydW
Similar sort of question but for an array.

I want to randomise all the subquestions, but I want to hold the last one (which is different from the rest) at the end of the list (but not an exclusive answer like 'none of the above').

Haven't been able to get most of the solutions I've found on-line to work. The question example is attached & using Limesurvey 2.05.

Regards, Lloyd.
Attachments:

Please Log in to join the conversation.

More
3 years 1 month ago #103551 by tpartner
Lloyd, since your sub-question codes all start with an alpha character (as they should) and are sequential, we can detect the highest code (alphabetically) and move that sub-question to the end.

Add the following to the array question source:

<script type="text/javascript" charset="utf-8">	
 
	$(document).ready(function() {
 
		// Identify this question ID
		var qID = {QID};
 
		// Build an array of subquestion codes
		var sqCodeArr = new Array();
		$('#question'+qID+' table.question tbody tr').each(function(i) {
 
			var sqCode = $(this).attr('id').split('X'+qID+'')[1];
			sqCodeArr.push(sqCode);
		});
 
		// Find the highest code (alphabetically) 
		sqCodeArr.sort(); 
		var highCode = sqCodeArr[sqCodeArr.length-1];
 
		// Now, move that subquestion to the bottom 
		$('#question'+qID+' table.question tbody').append($('#question'+qID+' tr[id$="X'+qID+highCode+'"]'));
	});
 
</script>


.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: LloydW

Please Log in to join the conversation.

More
3 years 1 month ago #103571 by LloydW
A super solution and well coded and explained - thanks Tony it works a charm. :cheer:

Many thanks.

Please Log in to join the conversation.

More
2 years 8 months ago #109726 by dknvs
Hi,
I have found the following [url=http://http://manual.limesurvey.org/Workarounds:_Manipulating_a_survey_at_runtime_using_Javascript#Partially_Randomized_Answers_-_Multiple_Options_.26_List_.28radio.29_questions]script[/url] that helps me the make the last answer choice fixed.
However, it's only for codes that are in order. For example:
1 answer1
2 answer2
3 answer3

For our survey, we don't want to include "don't know" in the calculation. So we usually give DK as the don't know/none of above.
1 answer1
2 answer2
3 answer3
DK None of above

The following javascript will only work if we make DK a "4". Could you help me to this?
thank you!




<script type="text/javascript" charset="utf-8">

$(document).ready(function() {

// Identify this question
var qID = {QID};

// Find the number of answers
var ansCount = $('#question'+qID+' li.answer-item').length;

// Place the last answer created at the end of the list
var answer = $( 'input[id$="X'+qID+ansCount+'"]');
var answerItem = $(answer).closest('li');
var answersList = $(answer).closest('ul');
$(answersList).append(answerItem);

});
</script>

Please Log in to join the conversation.

More
2 years 8 months ago - 2 years 8 months ago #109736 by tpartner
Try this

<script type="text/javascript" charset="utf-8">
 
	$(document).ready(function() {
 
	// Identify this question
	var qID = {QID};
 
	// Place the "DK" code option at the end of the list
	var answer = $( 'input[id$="X'+qID+'DK"]');
	var answerItem = $(answer).closest('li');
	var answersList = $(answer).closest('ul');
	$(answersList).append(answerItem);
 
	});
</script>

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last Edit: 2 years 8 months ago by tpartner.
The following user(s) said Thank You: dknvs

Please Log in to join the conversation.

More
2 years 8 months ago #109758 by dknvs
YAY! IT WORKS! THANK YOU SO MUCH! :woohoo:

Please Log in to join the conversation.

More
1 year 1 month ago #129711 by delarammahdaviii
help me about ,Array questions to be randomized while always keeping 3 sub-question at the end

Please Log in to join the conversation.

More
1 year 1 month ago #129712 by tpartner
If, for example, the sub-question codes of the last 3 items are 97, 98 and 99, you can insert a script like this:

<script type="text/javascript" charset="utf-8">		
	$(document).ready(function(){ 
 
		// Move sub-question codes 97, 98, 99 to the end of the array
		$('#question{QID} table.subquestions-list tbody').append($('#question{QID} table.subquestions-list tr[id$="X{QID}97"]'))
		.append($('#question{QID} table.subquestions-list tr[id$="X{QID}98"]'))
		.append($('#question{QID} table.subquestions-list tr[id$="X{QID}99"]'));
 
		// Fix up array row background colours
		$('#question{QID} table.subquestions-list tbody > tr').each(function(i){
			$(this).removeClass('array1 array2').addClass('array'+(2-(i%2)));
		});
    });
</script>

Sample survey attached:

File Attachment:

File Name: limesurvey...9847.lss
File Size:19 KB

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Attachments:
The following user(s) said Thank You: delarammahdaviii

Please Log in to join the conversation.

More
1 year 1 month ago #129713 by delarammahdaviii
Thanks Tony :)

Please Log in to join the conversation.

More
1 year 3 weeks ago - 1 year 3 weeks ago #130977 by flannery
Attached is an updated version for 2.50+. This will keep subquestions 12 and 13 at the bottom of the list for a multiple choice question using the newspaper theme.
<script type="text/javascript" charset="utf-8">		
	$(document).ready(function(){ 
 
		// Move sub-question codes 12, 13 to the end of the array
		$('#question{QID} .subquestions-list ').append($('#question{QID} .subquestions-list div[id$="X{QID}12"]').parent() ).append($('#question{QID} .subquestions-list div[id$="X{QID}13"]').parent() );
 
    });
</script>
Last Edit: 1 year 3 weeks ago by flannery.

Please Log in to join the conversation.

Imprint                   Privacy policy         General Terms & Conditions         Revocation information and revocation form