Как кодировать в LimeSurvey, чтобы новая строка появлялась только тогда, когда предыдущая строка была заполнена
Я использую LimeSurvey и хочу включить вопрос, на котором респондент может указать до 30 имен в качестве ответа. Тем не менее, я не хочу изначально предоставлять респонденту 30 ящиков, так как это громоздко и требует тонны прокрутки для продолжения, если у вас есть только несколько имен для ввода. Можно ли закодировать вопрос так, чтобы новое поле появилось только после заполнения предыдущего поля? Благодарю.
4 ответа
РЕДАКТИРОВАТЬ: Этот ответ был написан, потому что я не мог найти ответ, представленный tpartner заранее. Основное отличие состоит в том, что моя основывается на заполнении предыдущей строки и кнопок tpartner для добавления или удаления строк.
Следующий код должен работать для всех массивов с одним выбором (например, 5-балльной шкалы) и может быть адаптирован к другим типам, если вы знаете Javascript/jQuery. Я хочу сделать больше, просто не сегодня. Поэтому не стесняйтесь спрашивать реализации для других типов вопросов.
Код можно добавить в начало файла template.js с помощью редактора шаблонов. Переменные "квест" и "первый" должны быть адаптированы на основе вашего опроса.
//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
ура
В версии 2.x (я не уверен, какая версия это позволяет, у меня работает 2.7, и она там работает), эта функция встроена через уравнение релевантности и не требует кодирования. Просто введите !is_empty(questioncode_Code)
в уравнении релевантности для текстового поля, которое вы хотите, чтобы появиться. Code
это код поля выше, которое вызывает появление.
Какой тип вопроса вы планируете использовать? По моему мнению, вам лучше всего использовать вопрос с кратким текстовым шрифтом и создать 30 текстовых полей. Затем вы можете использовать JavaScript, чтобы скрыть эти текстовые поля и показать их, как только предыдущее текстовое поле получит какое-либо значение в качестве входных данных.
ура!