Hallo,
die erste und simpelste Lösung ist natürlich die Fragenvalidierung.
Hier kannst Du ja festlegen, dass
WENN das Feld "keine Angabe" ausgewählt wurde, die Gesamtzahl der gewählten Optionen gleich "1" ist.
(((count(self.sq_Y001)==1) and (C2_Y001_X004==1)) OR (C2_Y001_X004!=1)) and
(((count(self.sq_Y002)==1) and (C2_Y002_X004==1)) OR (C2_Y002_X004!=1)) and
(((count(self.sq_Y003)==1) and (C2_Y003_X004==1)) OR (C2_Y003_X004!=1))
...
Wie Du siehst, ist die Y-Achse mit "Y001", "Y002",... kodiert, die X-Achse entsprechend mit "X001", "X002",...
Es gibt auch ein javascript workaround:
Füge dies in den Quellcode der Frage ein:
Code:
<script>
// 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 );
</script> <script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
$('#question{QID}').cbExclusiveColumns({
columns: [4] // Column(s) to be exclusive (comma-separated)
});
});
</script>
Du siehst auch hier, dass Du ganz unten anpassen musst, welche Spalte(n) exklusiv sein sollen.
Viele Erfolg
Joffm