Свойства и функции ответа
Любой вопрос (кроме информационного) содержит варианты ответа, один или несколько. Варианты ответа содержат код, текст и прочие свойства, заданные изначально (например, в редакторе списка вариантов ответа), а также переменные, которые заполняются при получении ответа на вопрос. Доступ к варианту ответа можно получить различными способами, в зависимости от типа вопроса, например:
// вопрос с единственным или множественным выбором
var a1 = Q23[3];
var a2 = Q23.answers[3];
// числовой или текстовый вопрос
var a3 = Q24.answer;
// табличный числовой или текстовый вопрос
var a4 = Q25.rows[2];
var a5 = Q25.rows[2].answer;
// табличный вопрос с единственным или множественным выбором
var a6 = Q26.rows[4][1];
var a7 = Q26.rows[4].answers[1];
Как и любые другие объекты, ответ содержит различные свойства и функции:
code
Код варианта ответа, заданный при создании варианта ответа в редакторе анкеты. Например:
Q.answers.getCodes().forEach(function (code) {
if (Q[code].code != code) {
// очень странно…
}
});
text
Текст варианта ответа, заданный при создании варианта ответа в редакторе анкеты. Также позволяет изменить этот текст. Примеры:
variables['Ответ 5'] = Q[5].text;
Q[5].text = Q2.getChecked()[0].openValueTxt;
textLocalizations
Текст ответа на указанном языке. Язык задаётся с помощью объекта Language.
variables['Ответ 5'] = Q[5].textLocalizations[Language.ru];
Q[5].textLocalizations[Language.ru] = Q2.getChecked()[0].openValueTxt;
plainText
Текст варианта ответа, очищенный от html-разметки. Только для чтения.
Q[5].text = '<b>Жирный текст</b>';
Q[5].text = Q[5].plainText;
openValueNum
Открытое числовое значение. Используется либо в простом числовом вопросе, либо когда у варианта ответа включено поле для ввода открытого числового значения. Поддерживает целые и дробные числа. Например:
variables['num1'] = Q1.openValueNum;
variables['num2'] = Q2[3].openValueNum;
Q.openValueNum = 2.5;
openValueInt
Открытое числовое значение преобразованное к целому числу. Равно значению указанному в openValueNum, только не допускает указания дробной части.
openValueTxt
Открытое текстовое значение. Используется либо в простом текстовом вопросе, либо когда у варианта ответа включено поле для ввода открытого текстового значения. Например:
variables['txt1'] = Q1.openValueTxt;
variables['txt2'] = Q2[3].openValueTxt;
variables['txt3'] = Q3.rows[1][2].openValueTxt;
Q.openValueTxt = 'Сложно сказать';
settings
Опции ответа, изменяющие различные его свойства. Принимают и возвращают значения true и false.
Опции, влияющие на структуру массива, следует включать/выключать в скрипте Подготовка. Если включить, например, флаг С открытым значением (текст) в скрипте перед показом, то текстовое поле в вопросе появится, но введённый текст в массив не попадёт.
- openValueNum
с открытым значением (число) - openValueTxt
с открытым значением (текст) - multilineTxt
многострочный текст - blocking
блокирующий / исключающий - blockingInTheGroup
блокирующий в группе - alwaysVisible
всегда отображается - disableReordering
не подлежит рандомизации / ротации - disableRepeat
запрещено использовать в циклах - skipExport
исключить поле при выгрузке - skipExportOV
отключить выгрузку открытого значения - hideInRespondentMode
скрывает ответ, строку или колонку таблицы в режиме просмотра респондентом вопроса на планшете - allowFractionalNumbers
разрешить ввод дробных чисел - allowEmptyOpenValue
разрешить пустые открытые значения - hideCode
не отображать код варианта ответа - hideText
не отображать текст варианта ответа - firstColumnBottom
расположить в первой колонке внизу - useDatePicker
использовать выбор даты - useTimePicker
использовать выбор времени - customRowValidation
проверка ответа скриптами - hideInRespondentMode
скрыть в режиме респондента
Примеры использования:
// Добавить ответу 5 числовое поле
Q[5].settings.openValueNum = true;
// Разрешить его не заполнять
Q[5].settings.allowEmptyOpenValue = true;
// Если у ответа 98 есть текстовое поле…
if (Q[98].settings.openValueTxt) {
// … что-то сделать
}
checked
Возвращает true, если вариант ответа выбран. Также может использоваться для принудительного выбора варианта ответа скриптом. Например:
if (!Q[4].checked) {
return error('Необходимо выбрать варианты ответа с кодом 4');
}
Q[6].checked = true;
visible
Возвращает true, если вариант ответа отображается. Также может использоваться для принудительного скрытия или показа варианта ответа. Например:
Q[1].visible = false;
exportCodeOverride
Переопределение кода варианта ответа, используемого при выгрузке итогового массива. Подробнее тут.
outputColumnTemplate
Шаблон имени переменной для варианта ответа, при выгрузке массива. Подробнее тут.
outputColumnTemplateOVN
Шаблон имени переменной для числового открытого значения для этого варианта ответа. Подробнее тут.
outputColumnTemplateOVT
Шаблон имени переменной для текстового открытого значения для этого варианта ответа. Подробнее тут.
show()
Делает вариант ответа видимым. Равносильно присваиванию true свойству visible. Например:
Q[5].show();
hide()
Скрывает вариант ответа. Равносильно присваиванию false свойству visible. Например:
Q[5].hide();
image
Содержит изображение ответа, а также позволяет добавить ответу изображение из объекта images. Примеры:
Q[5].image = images['Логотип'];
Q[5].image = Q34[5].image;
imageUrl
Содержит URL изображения, а также позволяет добавить ответу изображение с внешнего сервера по прямой ссылке. Приоритет этого свойства выше свойства image, то есть если они заданы оба, то выполнится только imageUrl. Пример:
if (!Q[5].imageUrl.length) {
Q[5].imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png';
}
imagePlacement
Содержит код расположения изображения относительно текста, а также позволяет задать расположение картинки. Более подробную информацию можно найти здесь. Примеры:
Q[5].imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png';
Q[5].imagePlacement = 4;
// или
Q[5].imagePlacement = ImagePlacementIds.Right;
getPosition()
Возвращает номер позиции ответа в вопросе Ранжирование. Например:
Q.answers[5].getPosition();