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)
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??
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.
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:
Code:
<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.
Hi,
I have found the following [url=https://https://www.limesurvey.org/manual/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 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.
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.
Code:
<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>