Hallo,
irgendwie war ich durch Deine Idee, dies mit einer Dual Matrix zu machen, etwas vernagelt.
Es geht doch viel einfacher mit einer Matrix(Texte).
Das hier schon oftmals gezeigte javascript-snippet macht auch hier eine Drop-Down-Darstellung.
Hier das javascript, welches Du in den Fragentext einfügst (im Quellcode-Modus)
Code:
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
var thisQuestion = $('#question{QID}');
// Insert selects
$('.answer-item.answer_cell_X001', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
<option value="0">Bitte wählen...</option>\
<option value="1">Privater PKW</option>\
<option value="2">Carsharing-PKW</option>\
<option value="3">Bus, Bahn</option>\
<option value="4">Fahrrad</option>\
<option value="5">Zu Fuß</option>\
</select>');
$('.answer-item.answer_cell_X002', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
<option value="0">Bitte wählen...</option>\
<option value="1">Privater PKW</option>\
<option value="2">Carsharing-PKW</option>\
<option value="3">Bus, Bahn</option>\
<option value="4">Fahrrad</option>\
<option value="5">Zu Fuß</option>\
</select>');
// Listeners
$('.inserted-select', thisQuestion).on('change', function(i) {
if($(this).val() != '') {
$(this).closest('.answer-item').find('input:text').val($.trim($('option:selected', this).text())).trigger('change');
}
else {
$(this).closest('.answer-item').find('input:text').val('').trigger('change');
}
});
// Returning to page
$('.with-select input:text', thisQuestion).each(function(i) {
var thisCell = $(this).closest('.answer-item');
var inputText = $.trim($(this).val());
var selectval = $('select.inserted-select option', thisCell).filter(function () { return $(this).html() == inputText; }).val();
$('select.inserted-select', thisCell).val(selectval);
});
// Clean-up styles
$('select.inserted-select', thisQuestion).css({
'max-width': '100%'
});
$('.with-select input:text', thisQuestion).css({
'position': 'absolute',
'left': '-9999em'
});
});
</script>
Du siehst, wo Du anpassen musst.
Natürlich die Items.
Und Du siehst, dass ich die Y-Achse mit Y001, Y002,... codiert habe, die X-Achse mit X001, X002,...
Das macht alles übersichtlicher.
Und die Validierung ist dann:
(is_empty(Q1_Y001_X001) or is_empty(Q1_Y001_X002) or Q1_Y001_X001!=Q1_Y001_X002) and (is_empty(Q1_Y002_X001) or is_empty(Q1_Y002_X002) or Q1_Y002_X001!=Q1_Y002_X002)
...
Das "is_empty" dient zur Vermeidung einer anfänglichen Fehlermeldung; wenn beide Felder noch leer sind, sind sie ja auch gleich.
Und hier die Studie:
Viel Erfolg
Joffm
P.S.
Da es sich um eine Matrix(Texte) handelt, werden die Ergebnisse auch in Textform gespeichert; das kann man aber schnell recoden, je nachdem in welchem Tool Du die Analyse fertigen willst.