Last Option In Array (Numbers) (Checkboxes) Row Excludes All Others

Más
1 año 1 mes antes #167886 por krosser
Actually, I've made a test survey instead of that single question in LSQ.
:)

I'm using the latest LS 3.17 hosted on LS servers, not installed locally.
Adjuntos:

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 1 mes antes - 1 año 1 mes antes #168089 por tpartner
To render specific array columns as exclusive in 3.x...

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.
Official LimeSurvey Partner - partnersurveys.com
Última Edición: 1 año 1 mes antes por tpartner.
El siguiente usuario dijo gracias: krosser

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 1 mes antes #168101 por krosser
Have just tested it and it works nicely! Many thanks for your help, Tony!!

I'm using the latest LS 3.17 hosted on LS servers, not installed locally.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 8 horas antes #184534 por KaryG
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!

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 mes 6 horas antes #184539 por Joffm
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


Volunteers are not paid.
Not because they are worthless, but because they are priceless
El siguiente usuario dijo gracias: KaryG

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
4 semanas 2 días antes #184545 por KaryG
Thanks for the help! I will try in this way.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

¡Comenzar ahora!

Simplemente cree una cuenta y comience a usar LimeSurvey hoy mismo.

Registrarse ahora
¡Únase a nuestro boletín informativo!

Iniciar sesión