Перейти к основному содержимому

Свойства и функции ответа

Любой вопрос (кроме информационного) содержит варианты ответа, один или несколько. Варианты ответа содержат код, текст и прочие свойства, заданные изначально (например, в редакторе списка вариантов ответа), а также переменные, которые заполняются при получении ответа на вопрос. Доступ к варианту ответа можно получить различными способами, в зависимости от типа вопроса, например:

// вопрос с единственным или множественным выбором
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();