Hallo,
was Du machen willst, ist ja so etwas wie MaxDiff.
Leider hast Du uns nicht gesagt, wo LimeSurvey gehostet ist.
Ist es eine Uni-Installation? Bei dieser wirst Du wohl in Deinen Rechten beschränkt sein.
Falls Du berechtigt bist, javascript einzubauen, dann haben wir natürlich dieses.
Dies ist eine Frage vom Typ "Matrix nach Spalte".
Wie Du siehst, wird hier automatisch die gleichartige Nennung der anderen Kategorie gesperrt.
Du fügst dieses javascript und das css snippet in den Quellcode der Frage ein.
Code:
<script type="text/javascript" charset="utf-8">
function maxDiff(qID, randomize) {
// Identify some elements
var thisQuestion = $('#question'+qID);
var thisTable = $('table.subquestion-list:eq(0)', thisQuestion);
// Assign a new question class
$(thisQuestion).addClass('max-diff-array');
// Move the columns
$('thead tr:eq(0)', thisTable).prepend($('thead tr:eq(0) th:eq(1)', thisTable));
$('tr.answers-list', thisTable).each(function(i){
$('td.answer-item:eq(0)', this).prependTo(this);
});
// Random rows
if(randomize) {
var rowsArr = [];
$('tr.answers-list', thisTable).each(function(i){
$(this).attr('data-index', i);
rowsArr.push(i);
});
shuffleArray(rowsArr);
$(rowsArr).each(function(i){
$('tbody', thisTable).append($('tr[data-index="'+this+'"]', thisTable));
});
}
// Prevent clicking twice in the same row
$('input[type="radio"]', thisQuestion).on('click', function () {
$('input[type="radio"]', thisQuestion).prop('disabled', false);
$('input[type="radio"]:checked', thisQuestion).each(function(i) {
var thisRow = $(this).closest('tr.answers-list');
$('input[type="radio"]', thisRow).not(this).prop('disabled', true);
});
});
// Fix up the row classes
var rowClass = 1;
$('tr.answers-list', thisTable).each(function(i) {
$(this).addClass('array'+(2-(i%2)));
});
}
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
$(document).ready(function(){
// Call the maxDiff() function
// Set the second parameter to true for randomized rows
maxDiff({QID}, true);
});
</script>
Code:
<style type="text/css">.ls-answers tbody .answertext {
text-align: center;
}
</style>
Wie Du ganz unten im javascript siehst, kannst Du durch den Paramter "true" bzw. "false" bestimmen, ob Deine Wörter randomisiert dargestellt werden oder nicht.
Das ist die sophisticated Lösung.
Die Standard-Lösung ist natürlich: Validiere die Frage, dass ein Wort nicht zweimal gewählt werden kann.
Wäre also so etwas in "Logik / Fragevalidierungsgleichung"
Q1_SQ001.NAOK!=Q1_SQ002.NAOK
Der Wert der beiden Teilfragen darf nicht gleich sein.
Viel Erfolg
Joffm