Multilingual surve: sorting responses alphabetically in a 2nd, 3rd language ?

More
6 years 3 months ago - 6 years 3 months ago #107816 by karld
Hello,

I have a survey with 2 languages:
  • in the main language, the answers of a question (e.g. multiple choice) are sorted alphabetically (I did it when designing the question)
  • How can I have the answers sorted alphabetically in the second language?

Thanks in advance,

--
Carl
Last edit: 6 years 3 months ago by karld.

Please Log in to join the conversation.

LimeSurvey Partners
More
6 years 3 months ago - 6 years 3 months ago #107852 by tpartner
You will need to use a little JavaScript to move those around.

Here's a solution for list-radio and multiple-choice questions

1) Set up your survey to use JavaScript .

2) Add this function to the end of template.js:
function sortOptions(qID) {
 
	// Identify this question
	var thisQuestion = $('#question'+qID);
 
	// Create an array of subquestions
	var subQsArr = new Array();
	$('li.answer-item', thisQuestion).each(function(i) {
		var thisString = $(this).find('.answertext').text()+'---'+$(this).attr('id');
		subQsArr.push(thisString);
	});
 
	// Sort the array
	subQsArr.sort();
 
	// Repostion the subquestions in the sorted order
	$(subQsArr).each(function(i, val) {
		var thisID = val.split('---')[1];
		$('li.answer-item:eq(0)', thisQuestion).parent().append($('#'+thisID));
	});
}

3) Add this script to the source of every question that you want sorted (in all languages to be sorted):
<script type="text/javascript" charset="utf-8">	
	$(document).ready(function() {
		sortOptions({QID});
	});
</script>

.

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Official LimeSurvey Partner - partnersurveys.com
Last edit: 6 years 3 months ago by tpartner.
The following user(s) said Thank You: karld

Please Log in to join the conversation.

More
6 years 3 months ago #107883 by karld
Thank you very much.

I have tried it on a radio buttons list question, it works fine, but the "other" with a textbox is also sorted.

Please Log in to join the conversation.

More
6 years 3 months ago #107890 by tpartner
Oh, yeah, forgot that. Use this as the function in template.js:
function sortOptions(qID) {
 
	// Identify this question
	var thisQuestion = $('#question'+qID);
 
	// Create an array of subquestions
	var subQsArr = new Array();
	$('li.answer-item', thisQuestion).each(function(i) {
		var thisString = $(this).find('.answertext').text()+'---'+$(this).attr('id');
		subQsArr.push(thisString);
	});
 
	// Sort the array
	subQsArr.sort();
 
	// Repostion the subquestions in the sorted order
	$(subQsArr).each(function(i, val) {
		var thisID = val.split('---')[1];
		$('li.answer-item:eq(0)', thisQuestion).parent().append($('#'+thisID));
	});
	$('li.answer-item:eq(0)', thisQuestion).parent().append($('li.answer-item[id$="other"]', thisQuestion));
}

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Official LimeSurvey Partner - partnersurveys.com
The following user(s) said Thank You: karld

Please Log in to join the conversation.

More
6 years 3 months ago - 6 years 3 months ago #107900 by karld
Great ! It works as expected.

Many thanks.
Last edit: 6 years 3 months ago by karld.

Please Log in to join the conversation.

More
3 months 1 week ago #197945 by ymca
Hi,

I've also tried that, but it didn't work for me.

Version 4.2.0+200422

LS Version 4.2+

Please Log in to join the conversation.

More
3 months 1 week ago #197946 by ymca

ymca wrote: Hi,

I've also tried that, but it didn't work for me.

Version 4.2.0+200422


Maybe the problem is here?
I've insert the text from here to the empty "costum.js" because "templet.js" had a warning not to edit.

tpartner wrote: Oh, yeah, forgot that. Use this as the function in template.js:

function sortOptions(qID) {
 
	// Identify this question
	var thisQuestion = $('#question'+qID);
 
	// Create an array of subquestions
	var subQsArr = new Array();
	$('li.answer-item', thisQuestion).each(function(i) {
		var thisString = $(this).find('.answertext').text()+'---'+$(this).attr('id');
		subQsArr.push(thisString);
	});
 
	// Sort the array
	subQsArr.sort();
 
	// Repostion the subquestions in the sorted order
	$(subQsArr).each(function(i, val) {
		var thisID = val.split('---')[1];
		$('li.answer-item:eq(0)', thisQuestion).parent().append($('#'+thisID));
	});
	$('li.answer-item:eq(0)', thisQuestion).parent().append($('li.answer-item[id$="other"]', thisQuestion));
}


LS Version 4.2+

Please Log in to join the conversation.

More
3 months 1 week ago #197956 by Joffm
This thread started 6 years ago.
So, how can you expect a script, that was obviously created for a previous version (maybe 1.92 or 2.05) , to run.

Nowadays we have the option:
Sort answers alphabetically

that works fine in version 3.x






even in drop downs


But obviously there is a bug in version 4.x.




You should file a bug report


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

Please Log in to join the conversation.

More
3 months 1 week ago #197967 by ymca

Joffm wrote: This thread started 6 years ago.
So, how can you expect a script, that was obviously created for a previous version (maybe 1.92 or 2.05) , to run.

Wasn't expecting, was hoping.

You should file a bug report

Sure.

LS Version 4.2+

Please Log in to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now