- Posts: 222
- Thank you received: 10
- Forum
- English support forums
- Can I do this with LimeSurvey?
- Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
4 years 1 month ago #167886
by krosser
I'm using the latest LS 3.22 hosted on LS servers, not installed locally.
Replied by krosser on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Actually, I've made a test survey instead of that single question in LSQ.

I'm using the latest LS 3.22 hosted on LS servers, not installed locally.
The topic has been locked.
4 years 3 weeks ago - 4 years 3 weeks ago #168089
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
To render specific array columns as exclusive in 3.x...
1) Place this in your theme custom.js file:
2) Place something like this in the source of the question (in this case, columns 3 and 4 will be exclusive):
1) Place this in your theme custom.js file:
// A jQuery plugin to render column(s) in checkbox arrays exclusive
(function( $ ){
$.fn.cbExclusiveColumns = function(options) {
var opts = $.extend( {
//columns: [3,4] // Column(s) to be exclusive (comma-separated)
}, options);
return this.each(function() {
var thisQuestion = $(this)
// Add some classes to the checkbox cells
$('td.answer-item', thisQuestion).addClass('normal-item');
$('tr.subquestion-list', thisQuestion).each(function(i) {
var thisRow = $(this);
$.each(opts.columns, function(i, val) {
$('td.answer-item:eq('+(val-1)+')', thisRow).removeClass('normal-item').addClass('exclusive-item');
});
});
// A listener on the checkboxes
$('input[type="checkbox"]', thisQuestion).on('change', function (event) {
handleExclusive($(this).closest('td'));
});
function handleExclusive(thisCell) {
var thisRow = $(thisCell).closest('tr');
// Uncheck the appropriate boxes in a row
if ($(thisCell).hasClass('normal-item')) {
$('.exclusive-item input[type="checkbox"]', thisRow).prop('checked', false);
$('.exclusive-item input[type="text"]', thisRow).val('');
}
else {
$('.answer-item', thisRow).not(thisCell).find('input[type="checkbox"]').prop('checked', false);
$('.answer-item', thisRow).not(thisCell).find('input[type="text"]').val('');
}
// Check conditions (relevance)
$('td.answer-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');
});
}
});
};
})( jQuery );
2) Place something like this in the source of the question (in this case, columns 3 and 4 will be exclusive):
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
$('#question{QID}').cbExclusiveColumns({
columns: [3,4] // Column(s) to be exclusive (comma-separated)
});
});
</script>
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last edit: 4 years 3 weeks ago by tpartner.
The following user(s) said Thank You: krosser
The topic has been locked.
4 years 3 weeks ago #168101
by krosser
I'm using the latest LS 3.22 hosted on LS servers, not installed locally.
Replied by krosser on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Have just tested it and it works nicely! Many thanks for your help, Tony!!
I'm using the latest LS 3.22 hosted on LS servers, not installed locally.
The topic has been locked.
3 years 1 week ago #184534
by KaryG
Replied by KaryG on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Hi,
I would like to alter the script from this post to make exclusive last 3 elements in each array row. Because I'm no javascript expert I don't know how to do it myself. Can you help me?
Thanks!
I would like to alter the script from this post to make exclusive last 3 elements in each array row. Because I'm no javascript expert I don't know how to do it myself. Can you help me?
Thanks!
The topic has been locked.
3 years 1 week ago #184539
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
You saw this in tpartner's last post
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
$('#question{QID}').cbExclusiveColumns({
columns: [3,4] // Column(s) to be exclusive (comma-separated)
});
});
</script>
Here you enter your "exclusive" columns.
Joffm
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
$('#question{QID}').cbExclusiveColumns({
columns: [3,4] // Column(s) to be exclusive (comma-separated)
});
});
</script>
Here you enter your "exclusive" columns.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: KaryG
The topic has been locked.
3 years 1 week ago #184545
by KaryG
Replied by KaryG on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Thanks for the help! I will try in this way.
The topic has been locked.
- davebostockgmail
-
- Offline
- Premium Member
-
Less
More
- Posts: 147
- Thank you received: 25
2 years 11 months ago #185803
by davebostockgmail
Replied by davebostockgmail on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Following on from this is there any way to make the last row of an array numbers with checkboxes exclusive
For example
A B
Option 1 [ ] [ ]
Option 2 [ ] [ ]
Exclusive [ ] [ ]
So in this case you can select both option 1 and 2 as a multiple but the exclusive option behaves as it would in a multiple choice question?
Version 3.17.5
Thanks
Dave
For example
A B
Option 1 [ ] [ ]
Option 2 [ ] [ ]
Exclusive [ ] [ ]
So in this case you can select both option 1 and 2 as a multiple but the exclusive option behaves as it would in a multiple choice question?
Version 3.17.5
Thanks
Dave
The topic has been locked.
2 years 11 months ago #185805
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Hi,
can't you swap rows and columns?
Or is there such a large number of options that it would not fit the screen?
Joffm
can't you swap rows and columns?
Or is there such a large number of options that it would not fit the screen?
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
2 years 11 months ago #185806
by krosser
I think the workaround you need is in this thread...
I'm using the latest LS 3.22 hosted on LS servers, not installed locally.
Replied by krosser on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
davebostockgmail wrote: Following on from this is there any way to make the last row of an array numbers with checkboxes exclusive
For example
A B
Option 1 [ ] [ ]
Option 2 [ ] [ ]
Exclusive [ ] [ ]
So in this case you can select both option 1 and 2 as a multiple but the exclusive option behaves as it would in a multiple choice question?
Version 3.17.5
Thanks
Dave
I think the workaround you need is in this thread...
I'm using the latest LS 3.22 hosted on LS servers, not installed locally.
The topic has been locked.
- davebostockgmail
-
- Offline
- Premium Member
-
Less
More
- Posts: 147
- Thank you received: 25
2 years 11 months ago #185808
by davebostockgmail
Replied by davebostockgmail on topic Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others
Perfect ... thank you
The topic has been locked.