Използвам LimeSurvey и искам да включа въпрос, на който респондентът може да включи до 30 имена като отговор. Въпреки това, не искам първоначално да представя на респондента 30 полета, тъй като това е огромно и изисква много превъртане, за да продължите, ако имате само няколко имена за въвеждане. Възможно ли е да кодирате въпроса, така че ново поле да се появява само след попълване на предишното поле? Благодаря.
Как да кодирате в LimeSurvey, така че нов ред да се появява само когато предишният ред е попълнен
Отговори (4)
РЕДАКТИРАНЕ: Този отговор беше написан, защото не можах да намеря отговора, представен от tpartner предварително. Основната разлика е, че моят се основава на попълване на предишния ред, а този на tpartner върху бутони за добавяне или премахване на редове.
Следният код трябва да работи за всички масиви с един избор (напр. масив от 5-точкова скала) и е адаптивен към други типове, ако знаете малко Javascript/jQuery. Искам да правя още такива неща - само не днес. Така че не се колебайте да поискате реализации за други типове въпроси.
Кодът може да се добави в началото на файла template.js с помощта на редактора на шаблони. Променливите "quest" и "first" трябва да бъдат адаптирани въз основа на вашето проучване.
//Function to only display a new row if there is an answer in the previous row
//NOTICE: Rows which are reset to "No answer" will not be hidden
//NOTICE: This scipt was written based on LimeSurvey 2.00+ build 131107
//NOTICE: It only works for single-choice arrays (e.g. 5-point scale array) or multiple short texts
//BEGIN
$(document).ready( function() {
//SGQ code of the question to apply this to
var quest = "12345X1234X12345";
//A(nswer) code of the first row
var first = "1";
//hide all rows except the first
$("tr[id^='javatbd" + quest + "']").css("display","none");
$("tr[id='javatbd" + quest + first + "']").css("display","table-row");
//display rows if previous is answered
$("[name^='" + quest + "']").change(function() {
if(this.value.trim().length >= 1)
$("tr[id='javatbd" + this.name + "']").next().css("display","table-row");
});
});
//END
С Най-Добри Пожелания
Ето друг подход, който използва бутони за добавяне/премахване на редовете на масива - http://manual.limesurvey.org/Workarounds:_Manipulating_a_survey_at_runtime_using_Javascript#Variable_Length_Array_.28Multi_Flexible_Text.29_question
наздраве
Кой тип въпроси планирате да използвате? Най-добрият ви залог, според мен, трябва да бъде да използвате въпрос с няколко кратки текста и да създадете 30 текстови полета. След това можете да използвате javascript, за да скриете тези текстови полета и да ги покажете веднага щом предишното текстово поле получи някаква стойност като вход.
наздраве!
С версия 2.x (не знам коя версия започва да позволява това, аз използвам 2.7 и тя работи там), тази функционалност е вградена чрез уравнението за релевантност и не изисква кодиране. Просто въведете !is_empty(questioncode_Code)
в уравнението за релевантност за текстовото поле, което искате да оставите да се показва. Code
е кодът на полето едно над което се задейства появата.