Here's a quickly modified version of the "Checkbox Order" script:
<style>
#[% QuestionName() %]_div {
display: none;
}
</style>
<script>
$(document).ready(function(){
// Parameters
var selectQuestionName = '';
// Get checkbox question
if (!selectQuestionName) {
selectQuestionName = $('#[% QuestionName() %]_div').prevAll('.question.select')[0].id.replace(/_div/, '');
}
var items = $('input[name="hid_list_' + selectQuestionName + '"]').val().split(',').map(Number);
var regex = new RegExp(selectQuestionName + '_([0-9]+)');
// Delete other specify inputs
$('#[% QuestionName() %]_div .text_input, #[% QuestionName() %]_div textarea').remove();
// Load order
var order = [];
items.forEach(function(item){
var itemOrder = SSI_GetValue('[% QuestionName() %]_r' + item + '_c1');
if (itemOrder) {
order[itemOrder - 1] = item;
}
});
// Update order
$(document).on('lighthouseCheckboxChanged', function(event, graphicalObj, inputObj, checked, pageLoad){
if (!pageLoad) {
var match = inputObj.name.match(regex);
if (match) {
var item = Number(match[1]);
if (checked) {
order.push(item);
}
else {
var index = order.indexOf(item);
order.splice(index, 1);
}
$('#[% QuestionName() %]_div .numeric_input').val('');
for (var i = 1; i <= order.length; i++) {
$('#[% QuestionName() %]_r' + order[i - 1] + '_c1').val(i);
}
}
}
$('.checkOrderSpan').remove();
for (var i = 1; i <= order.length; i++) {
var text = '(' + i + ')';
$('label[for="' + selectQuestionName + '_' + order[i - 1] + '"]').append('<span class="checkOrderSpan"> ' + text + '</span>');
}
});
})
</script>
Line 53 can be updated to change exactly how the order is displayed to the user.