Lock answer option to start of the list

More
4 months 3 weeks ago #186395 by tixeon
[Version 3.17.7 hosted]

I regularly use the following script to anchor/lock the position of an answer code (e.g. Don't know) to the bottom of a randomised list after other-specify, and it works well. However, this time I need to anchor the FIRST answer option, have other-specify as the last option, and randomise all of the other answer options.

I have tinkered with this script as best I can but don't seem to be able to get it to work. Any ideas?
<script type="text/javascript" charset="utf-8">	
 
	$(document).on('ready pjax:scriptcomplete',function(){
 
		// The number of answers to be fixed at the end of the list
		var fixedAnswers = 1;
 
		// Set this to "true" if you want "Other" to be fixed in the last position
		var otherFixed = false;
 
		// Identify this question
		var qID = {QID}; 
 
		// Find the number of answers
		var ansCount = $('#question'+qID+' .answer-item').length;
		if($('#question'+qID+' input[type="text"]').length > 0) {
			ansCount = ansCount -1
		}
		console.log(ansCount);
 
		// Place the last n answers created at the end of the list
		var fixedIndex = fixedAnswers - 1;
		for (var i=0; i<fixedAnswers; i++) {
			var answer = $('input[id^="answer"][id$="X'+qID+(ansCount-fixedIndex)+'"]');
			var answerItem = $(answer).closest('.answer-item');
			var answersList = $(answer).closest('ul');
			$(answersList).append(answerItem);
			fixedIndex--;
		}		
 
		// Handle "Other"
		if(otherFixed == true && $('#question'+qID+' input[type="text"]').length > 0) {
			var otherAnswer = $('#question'+qID+' input[type="text"]');
			var otherAnswerItem = $(otherAnswer ).closest('.answer-item');
			var otherAnswersList = $(otherAnswer ).closest('ul');
			$(otherAnswersList).append(otherAnswerItem);
		}
	});
</script>

Please Log in or Create an account to join the conversation.

LimeSurvey Partners
More
4 months 3 weeks ago #186548 by Joffm
Easiest:
Replace "append" by "prepend" in section
// Place the last n answers created at the end of the list

Now the last n answers created are placed at the beginning of the list.

Joffm


Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in or Create an account to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now
Join our Newsletter!