Hallo,
ganz schnelle Antwort:
Es ist vom Typ "Mist rein - Mist raus"
1. Du hast diese Zeile geändert. Wieso?
var qID = {a1};
Im Original steht
var qID = {QID};
{QID} ist doch eine ExpressionScriptvariable,, die immer die aktuelle QuestionID enthält; da wird nichts geändert.
Und dann gibt es noch dies:
if($('#question'+qID+' .question-item:eq('+(inputNum-1)+') select').length == 0) {
$('#question'+qID+' .question-item:eq('+(inputNum-1)+')
input[type="text"]').before(prov1);
}
Du siehst, dass hier ein Zeilenumbruch ist, der in javascript nicht sein darf, da es sich um einen Befehl handelt.
Rührt einfach von der Formatierung her.
Wenn Du diesen Code aus meinem Tutorial hast, dann hast Du diesen Text in der Vorbemerkung übersehen.
Die dargestellten Codes sollten nicht aus diesem Text in LimeSurvey kopiert werden.Es könnten sich noch Reste der Formatierung im Text befinden, der den Code dann unbrauchbar macht.Daher bitte diese Codestücke immer aus der Beispielstudie übernehmen.
So, das wäre erledigt.
Jetzt steht im Code
// Hide the text input
$('#question'+qID+' .question-item:eq('+(inputNum-1)+') input[type="text"]').hide();
// Insert the select elements
if($('#question'+qID+' .question-item:eq('+(inputNum-1)+') select').length == 0) {
$('#question'+qID+' .question-item:eq('+(inputNum-1)+') input[type="text"]').before(prov1);
}
Dieses Drop-down wird also in der Zeile "inputnum-1" dargestellt. Die "-1" ist nur dazu da, um die "normale" Zählung 1,2,3,... in die Programmiersprachzählung 0,1,2,... umzuwandeln.
Du musst diesen Teil also für alle Zeilen einfügen.
Dann ist es besser, direkt die Zeilennummer zu verwenden, also "eq(0)", "eq(1)",...
Aber Du solltest wirklich besser eine Matrix(Texte) nehmen, wie ja schon der Fragetext Deines Beispiels aussagt.
Entweder mit nur einer Zeile und den BM1 - BM5 im Kopf, oder wie jetzt;
jedenfalls ist die Implementierung simpler.
Joffm