Add this script to the question source, it will randomize answers and fix the answer column with code "AO07" to the end. (adjust the
Code:
<script type="text/javascript" data-author="Tony Partner">
$(document).on('ready pjax:scriptcomplete',function(){
var fixedAnswerCode = 'AO07';
var thisQuestion = $('#question{QID}');
// Index the array columns
$('table.subquestion-list tr', thisQuestion).each(function(i) {
$('> *', this).each(function(i) {
$(this).attr('data-index', i);
});
});
// Identify the fixed column
var fixedIndex = $('.answer_cell_'+fixedAnswerCode+':eq(0)').attr('data-index');
$('[data-index="'+fixedIndex+'"]', thisQuestion).addClass('fixed-column');
// Identify "no answer"
if($('.noanswer-item', thisQuestion).length > 0) {
$('table.subquestion-list tr > :last-child', thisQuestion).addClass('col-no-answer');
}
// Create an array of the columns
var columns = [];
$('table.subquestion-list tr.answers-list:eq(0) td.answer-item', thisQuestion).each(function(i) {
columns.push($(this).attr('data-index'));
});
// A function to shuffle elements or contents of arrays
(function($){
$.fn.shuffle = function() {
return this.each(function(){
var items = $(this).children();
return (items.length)
? $(this).html($.shuffle(items))
: this;
});
}
$.shuffle = function(arr) {
for(
var j, x, i = arr.length; i;
j = parseInt(Math.random() * i),
x = arr[--i], arr[i] = arr[j], arr[j] = x
);
return arr;
}
})(jQuery);
// Shuffle the columns array
columns = $.shuffle(columns);
// Reposition the row elements
$('table.subquestion-list tr', thisQuestion).each(function(i) {
var thisRow = $(this);
$(columns).each(function(i, val) {
thisRow.append($('[data-index="'+val+'"]', thisRow));
thisRow.append($('.fixed-column', thisRow));
thisRow.append($('.col-no-answer', thisRow));
});
});
});
</script>