- Posts: 10248
- Thank you received: 3646
Ask the community, share ideas, and connect with other LimeSurvey users!
<script type="text/javascript" charset="utf-8"> $(document).ready(function() { // Identify this question var thisQuestion = $('#question{QID}'); // Add some classes $('.question-item:not(:last)', thisQuestion).addClass('non-exclusive-item'); $('.question-item:last', thisQuestion).addClass('exclusive-item'); // Handle exclusive items $('input.checkbox', thisQuestion).on('change', function(e) { if($(this).is(':checked')) { var actionItems = $('.non-exclusive-item', thisQuestion); if($(this).closest('.question-item').hasClass('non-exclusive-item')) { actionItems = $('.exclusive-item', thisQuestion); } actionItems.each(function(i) { $('input.checkbox', this).prop('checked', false).trigger('change'); $('input:hidden', this).attr('value', ''); $('input[type="text"]', this).val('').trigger('keyup'); }); } }); }); </script>
I just tested and it does work in 2.06 LTS. Can you attach a small sample survey containing only the affected question?I have tried using this script in version 2.6.7-lts Build 171212 and it doesn’t work.
tpartner wrote: Try this:
Code:<script type="text/javascript" charset="utf-8"> $(document).ready(function() { // Identify this question var thisQuestion = $('#question{QID}'); // Uncheck all excluded items $('div.question-item:last input.checkbox', thisQuestion).on('change', function(e) { if($(this).is(':checked')) { $('input.checkbox', thisQuestion).not($(this)).each(function(i) { $(this).prop('checked', false); $(this).nextAll('input:hidden:eq(0)').attr('value', ''); }); $('input[type="text"]', thisQuestion).val(''); } }); }); </script>
tpartner wrote: Try changing all instances of 'input.checkbox' to 'input [type="checkbox"]'
<script type="text/javascript" charset="utf-8"> $(document).ready(function() { // Identify this question var thisQuestion = $('#question{QID}'); // Add some classes $('.question-item:not(:last)', thisQuestion).addClass('non-exclusive-item'); $('.question-item:last', thisQuestion).addClass('exclusive-item'); // Handle exclusive items $('input[type="checkbox"]', thisQuestion).on('change', function(e) { if($(this).is(':checked')) { var actionItems = $('.non-exclusive-item', thisQuestion); if($(this).closest('.question-item').hasClass('non-exclusive-item')) { actionItems = $('.exclusive-item', thisQuestion); } actionItems.each(function(i) { $('input[type="checkbox"]', this).prop('checked', false).trigger('change'); $('input:hidden', this).attr('value', ''); $('input[type="text"]', this).val('').trigger('keyup'); }); } }); $('input[type="text"]', thisQuestion).on('keyup change', function(e) { var thisInput = $(this); setTimeout(function() { $(thisInput).closest('.question-item').find('input[type="checkbox"]').trigger('change'); }, 200); }); }); </script>
<script type="text/javascript" charset="utf-8"> $(document).ready(function() { // Identify this question var thisQuestion = $('#question{QID}'); // Add some classes var sqCount = $('.question-item', thisQuestion).length; $('.question-item', thisQuestion).addClass('non-exclusive-item'); $('.question-item:eq('+(sqCount-2)+')', thisQuestion).removeClass('non-exclusive-item').addClass('exclusive-item'); // 2nd last item $('.question-item:eq('+(sqCount-1)+')', thisQuestion).removeClass('non-exclusive-item').addClass('exclusive-item'); // Last item // Handle exclusive items $('input[type="checkbox"]', thisQuestion).on('change', function(e) { if($(this).is(':checked')) { var thisItem = $(this).closest('.question-item'); var actionItems = $('.question-item', thisQuestion).not($(thisItem)); if($(thisItem).hasClass('non-exclusive-item')) { actionItems = $('.exclusive-item', thisQuestion); } actionItems.each(function(i) { $('input[type="checkbox"]', this).prop('checked', false).trigger('change'); $('input:hidden', this).attr('value', ''); $('input[type="text"]', this).val('').trigger('keyup'); }); } }); $('input[type="text"]', thisQuestion).on('keyup change', function(e) { var thisInput = $(this); setTimeout(function() { $(thisInput).closest('.question-item').find('input[type="checkbox"]').trigger('change'); }, 200); }); }); </script>