2) Limit the non-exclusive items to a max of 3 per row.
Code:
<script type="text/javascript" data-author="Tony Partner">
$(document).on('ready pjax:scriptcomplete',function(){
var thisQuestion = $('#question{QID}')
// Add some classes to the checkbox cells
$('td.checkbox-item', thisQuestion).addClass('normal-item');
$('tr.subquestion-list', thisQuestion).each(function(i) {
$('.normal-item:last', this).removeClass('normal-item').addClass('exclusive-item')
});
// A listener on the checkboxes
$('input[type="checkbox"]', thisQuestion).on('change', function (event) {
handleCheckboxes($(this));
});
function handleCheckboxes(thisInput) {
var thisCell = $(thisInput).closest('td');
var thisRow = $(thisCell).closest('tr');
$('input[type="checkbox"]', thisRow).prop('disabled', false);
$('td', thisRow).closest('td').removeClass('checked-item');
$('input[type="checkbox"]:checked', thisRow).closest('td').addClass('checked-item');
// Exclusive item
if($('.exclusive-item input[type="checkbox"]:eq(0)', thisRow).is(':checked')) {
$('.normal-item input[type="hidden"]', thisRow).val('');
$('.normal-item input[type="checkbox"]', thisRow).prop('checked', false).prop('disabled', true);
}
else {
$('.exclusive-item input[type="hidden"]', thisRow).val('');
$('.exclusive-item input[type="checkbox"]', thisRow).prop('checked', false);
}
// Max 3 answers per row
if($('input[type="checkbox"]:checked', thisRow).length == 3) {
$('td:not(.exclusive-item):not(.checked-item)', thisRow).find('input[type="checkbox"]').prop('disabled', true);
}
// Check conditions (relevance)
$('td.checkbox-item', thisRow).each(function(i) {
var thisValue = '';
if($('input[type="checkbox"]', this).is(':checked')) {
thisValue = 1;
}
var thisSGQA = $('input[type="checkbox"]', this).attr('id').replace(/cbox_/, '');
$('input[type="hidden"]', this).attr('value', thisValue);
fixnum_checkconditions(thisValue, thisSGQA, 'hidden');
});
}
});
</script>