Hallo,
es ist etwas ungünstig, dass Du mit einer Version 4.x. arbeitest.
Dise empfehlen wir keineswegs, da sie noch zu viele Bugs aufweist.
Besser 3.x.LTS
Außerdem gibt es für diese Version auch noch nicht so viele angepasste workarounds.
Hier habe ich die schon erwähnte Matrix gefunden.
War ursprünglich für 2.50/2.73, funktioniert aber in 4.x., bis auf ein bisschen "Schönheit".
Also hier das script, das im Fragetext im Sourcecode-Modus eingefügt wird.
Code:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
// Identify this question
var qID = {QID};
var thisQuestion = $('#question'+qID);
// Add some classes
$(thisQuestion).addClass('with-exclusive-items');
$('td.answer-item', thisQuestion).addClass('non-exclusive-item');
// Loop through the last-column cells
$('td.answer-item:last-child', thisQuestion).each(function(i) {
varThisID = $('input[type="text"]', this).attr('id');
// Add a class
$(this).removeClass('non-exclusive-item').addClass('exclusive-item');
// Hide the text input
$('td.answer-item:last-child input[type="text"]', thisQuestion).hide();
// Insert checkboxes
$(this).append('<div class="checkbox">\
<input class="checkbox" name="" id="'+varThisID+'_cbox" value="N/A" type="checkbox">\
<label for="'+varThisID+'_cbox" class="answertext inserted-label"></label>\
</div>');
});
// Listener on the checkboxes
$('.exclusive-item input[type="checkbox"]', thisQuestion).on('change', function(e) {
var thisRow = $(this).closest('tr.subquestion-list');
var thisCell = $(this).closest('td.answer-item');
if($(this).is(':checked')) {
$('input[type="text"]', thisCell).val('1');
$('.non-exclusive-item input[type="text"]', thisRow).val('');
}
else {
$('input[type="text"]', thisCell).val('');
}
// Fire Expression Manager
$('input[type="text"]', thisRow).each(function(i) {
$(this).trigger('keyup');
});
});
// Listener on the text inputs
$('.non-exclusive-item input[type="text"]', thisQuestion).on('keyup change', function(e) {
var thisRow = $(this).closest('tr.subquestion-list');
if($.trim($(this).val()) != '') {
$('.exclusive-item input[type="checkbox"]', thisRow).prop('checked',false);
$('.exclusive-item input[type="text"]', thisRow).val('');
}
// Fire Expression Manager
$('.exclusive-item input[type="text"]', thisRow).trigger('keyup');
});
// Insert some styles (these could be in template.css)
// For the LS 2.67 default template
var newStyles = '.with-exclusive-items thead th.answertext {\
text-align: center;\
}\
.with-exclusive-items .exclusive-item {\
text-align: center;\
vertical-align: middle;\
cursor: pointer;\
}\
.with-exclusive-items .checkbox {\
padding-left: 50%;\
}\
.with-exclusive-items .inserted-label {\
width: 24px;\
min-height: 24px;\
padding: 0;\
}\
.with-exclusive-items .inserted-label::before {\
margin: 4px 0 0 4px;\
}\
.with-exclusive-items .inserted-label::after {\
margin: 4px 0 0 4px;\
}';
$('head').append('<style type="text/css">'+newStyles+'</style>');
});
</script>
Im letzten Teil kannst Du Deine eigenen Ideen des Stylings einbringen.
Kleines Beispiel
Die beiden Optionen sind übrigens exclusiv. Man muss also nicht zusätzlich validieren.
Und falls dies bei Dir auch nicht erlaubt ist, kannst Du ja immer noch auf die oben gezeigten zwei Fragen, die mithilfe von css wie eine aussehen, zurückgreifen.
Stichworte: .no-bottom, .no-question.
Ich werde einmal sehen, ob es in 4.x. funktioniert.
Joffm
Nur mal so nebenbei: Das Handbuch hast Du aber schon gelesen? Zumindest die Fragetypen und den Rest einmal quer, damit Du weißt, was alles drinsteht.