Свойства и функции вопроса
Получить доступ к вопросу можно различными методами. Например используя глобальные переменные Q1, Q2 и т.д., или используя объект questions, или просто используя параметр Q, который передается в скрипты перед показом и после ответа на вопрос. Полученный объект содержит различные переменные и функции.
Помимо перечисленных здесь методов и свойств, через вопрос доступны методы и свойства списка ответов. Например, Q.show(5) равнозначно вызову Q.answers.show(5)
number
Содержит номер вопроса. Только для чтения.
type
Тип вопроса (тип ответа на вопрос). Только для чтения. Содержит число, которое соответствует одному из вопросов:
- Информация
- Текстовый
- Числовой
- Единственный выбор
- Множественный выбор
- Таблица: текст
- Таблица: числа
- Таблица: единственный выбор
- Таблица: множественный выбор
- Выпадающий список: единственный выбор
- Впадающий список: множественный выбор
- Приветствие
- Ранжирование
- Рейтинг
- Таблица: рейтинг
- Клик-тест: текстовый
- Шкала максимального различия
- Телефон
- Слайдер
- Дата и время
- Группировка с ранжированием
- Таблица: слайдер
- Семантический дифференциал
- Клик-тест: изображение
- Таблица: выпадающий список, единственный выбор
- Капча
- Кликер
Вместо чисел можно использовать объект QuestionTypeIds со следующими свойствами:
- WelcomeScreen - приветствие,
- Information - информация,
- Captcha — капча,
- Text - текстовый,
- Phone - телефон,
- Email - email,
- DateTime - дата и время,
- Numeric - числовой,
- SingleChoice - единственный выбор,
- MultipleChoice - множественный выбор,
- Dropdown_SingleChoice - выпадающий список: единственный выбор,
- Dropdown_MultipleChoice - выпадающий список: множественный выбор,
- Ranking - ранжирование,
- GrouppingAndRanking — группировка с ранжированием,
- Rating - рейтинг,
- Slider - слайдер,
- ClickTest_Text - клик-тест: текстовый,
- ClickTest_Image — клик-тест: изображение,
- Table_Text - таблица: текст,
- Table_Numeric - таблица: числа,
- Table_SingleChoice - таблица: единственный выбор,
- Table_MultipleChoice - таблица: множественный выбор,
- Table_Dropdown_SingleChoice — таблица: выпадающий список, единственный выбор,
- Table_Rating - таблица: рейтинг,
- Table_Slider — таблица: слайдер,
- MaxDiff - шкала максимального различия,
- SemanticDifferential — семантический дифференциал,
- Clicker — кликер.
Примеры использования:
if (Q.type == 4 || Q.type == QuestionTypeIds.MultipleChoice) {
// Что-то сделать
}
text
Текст вопроса. Допускается использование html-разметки.
Q.text = 'На <u>прошлой неделе</u> ' + Q.text;
textLocalizations
Текст вопроса на указанном языке. Язык задаётся с помощью объекта Language.
Q.textLocalizations[Language.ru] = 'На <u>прошлой неделе</u> ' + Q.textLocalizations[Language.ru];
plainText
Текст вопроса, очищенный от html-разметки. Только для чтения.
Q.text = 'На <u>прошлой неделе</u> ' + Q.text;
Q.text = Q.plainText;
comment
Комментарий для вопроса. Допускается использование html-разметки.
commentLocalizations
Комментарий для вопроса на указанном языке. Язык задаётся с помощью объекта Language.
plainComment
Комментарий вопроса, очищенный от html-разметки. Только для чтения.
condition
Условие показа вопроса.
settings
Опции вопроса, изменяющие различные его свойства. Принимают и возвращают значения true и false.
Опции, влияющие на структуру массива, следует включать/выключать в скрипте Подготовка. Если включить, например, флаг Исключить вопрос при выгрузке в скрипте перед показом, то в массиве вопрос всё равно будет.
- randomizeAnswers
Рандомизация вариантов ответа перед показом - swapRowsAndColumns
Перевернуть таблицу / Всегда отображать группы снизу - exportInCategoricalMode
Выгружать в категориальном режиме - skipExport
Исключить вопрос при выгрузке - disableAudioRecording
Отключить запись звука - keepExportOV
Оставить выгрузку открытых значений при исключении выгрузки вопроса - exportInAlternativeFlagsMode
Выгружать в альтернативном режиме (для множественного выбора) - allowFractionalNumbers
Разрешить ввод дробных чисел - showAutoAnswerProgress
Показать таймер автоответа - rotateAnswers
Ротация вариантов ответа перед показом - verticalTextInColumnHeaders
Вертикальный текст в заголовках колонок табличного вопроса - customValidation
Проверка ответа скриптами - enableAudioRecording
Включить запись звука - forceSilentAudioRecording
Не отображать индикатор записи звука (скрытая запись) - enableGPS
Включить запись GPS-координат - enableGeoCoder
Включить определения адреса по GPS-координатам - useDatePicker
Для открытого текстового значения использовать выбор даты - useTimePicker
Для открытого текстового значения использовать выбор времени - enableFileAttachments
Разрешить добавление вложений к ответу на вопрос - enableSignatureAttachment
Включить возможность добавления подписи к ответу на вопрос (планшеты) - allowEmptySignature
Не требовать обязательного добавления подписи (планшеты) - showRowsOneByOne
Показывать строки таблицы по мере ответа - enableSearchField
Добавить строку поиска - disableHidingOpenValue
Отключить скрытие полей с открытыми значениями - showGroupsWithCollapsedView
Показывать группы в свёрнутом виде - grouppingAllNotRequired
Не требовать группировки всех элементов - highlightTrackBeforeSliderHandle
Выделять шкалу перед ползунком - canSkip
Необязательный вопрос - useBarcodeScanner1D
Использовать сканер штрихкода - useBarcodeScanner2D
Использовать сканер QR-кода - hideGoBackButton
Скрыть кнопку "Назад" - hideGoFirstButton
Скрыть кнопку "Начало" - hideInterruptButton
Скрыть кнопку "Завершить" - autoSubmitSingleChoice
Автопереход далее при выборе единственного ответа - disableClipboardPaste
Запретить вставку текста из буфера обмена - displayMode
Режим отображения. Задаётся с помощью свойств объекта QuestionDisplayMode:- Adaptive — адаптивно (по ширине экрана)
- AlwaysCompact — всегда компактный вид
- AlwaysFull — всегда полный вид
Примеры использования:
// Включить рандомизацию
Q.settings.randomizeAnswers = true;
// Необязательный вопрос
Q.settings.canSkip = true;
// Компактный вид
Q.settings.displayMode = QuestionDisplayMode.AlwaysCompact;
minAnswerCount
Минимальное количество ответов, которые надо выбрать (для вопросов с множественным выбором).
maxAnswerCount
Максимальное количество ответов, которые можно выбрать (для вопросов с множественным выбором).
columnCount
Количество колонок (используется при отображении вопросов с единственным или множественным выбором). Не используется в табличных вопросах.
textLineCount
Количество строк для вопросов с типом ответа Текстовый.
openValueNum
Открытое числовое значение для вопросов с типом ответа Числовой и Рейтинг. Поддерживает целые и дробные числа.
variables['num'] = Q.openValueNum;
Q.openValueNum = 2.5;
openValueInt
Открытое числовое значение, приведенное к целому числу, для вопросов с типом ответа Числовой и Рейтинг.
openValueTxt
Открытое текстовое значение для вопросов с типом ответа Текстовый.
variables['txt'] = Q.openValueTxt;
Q.openValueTxt = 'Сложно сказать';
isAnswered
Возвращает true, если вопрос считается отвеченным (содержит ответ, который достаточен для перехода на следующий вопрос).
outputColumnTemplate
Шаблон имени переменной для вопроса при выгрузке. Подробнее тут.
outputColumnTemplateOVN
Шаблон имени переменной для открытых числовых значений при выгрузке. Подробнее тут.
outputColumnTemplateOVT
Шаблон имени переменной для открытых текстовых значений при выгрузке. Подробнее тут.
answer
Быстрый доступ к полям ответа для вопросов с числовым или текстовым типом ответа. Например:
var text = Q34.answer.openValueTxt;
var num = Q35.answer.openValueNum;
answers
Доступ к вариантам ответа для вопросов с единственным или множественным выбором. Например:
if (Q37.answers[5].checked) {
// …
}
// также допускается более короткая форма обращения
if (Q37[5].checked) {
// …
}
rows
Доступ к строкам для табличных вопросов. Например:
if (Q38.rows[5].getCheckedCodes() > 1) {
// …
}
columns
Доступ к колонкам (вариантам ответа) для табличных вопросов. Например:
Q38.columns[2].text = 'Лента';
categoricalIndexes
Список псевдонимов, применяемых вместо порядкового номера ответа, используемых при формировании имени переменной при выгрузке вопросов с множественным выбором в категориальном режиме. Подробнее тут.
reset()
Сброс всех ответов в изначальное состояние (сбрасывается checked и открытые значения openValueNum/openValueTxt, а также visible становится true у всех вариантов ответов, а также у строк и колонок табличных вопросов).
image
Содержит изображение вопроса, а также позволяет добавить в вопрос изображение из объекта images. Примеры:
Q.image = images['Логотип'];
Q.image = Q34.image;
imageUrl
Содержит URL изображения, а также позволяет добавить в вопрос изображение с внешнего сервера по прямой ссылке. Приоритет этого свойства выше свойства image, то есть если они заданы оба, то выполнится только imageUrl. Пример:
if (!Q.imageUrl.length) {
Q.imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png';
}
imagePlacement
Содержит код расположения изображения относительно текста, а также позволяет задать расположение картинки. Принимает свойства объекта ImagePlacementIds:
- Default - значение по умолчанию. Расположение задаётся настройками сервера.
- Before - над текстом.
- After - под текстом.
- Left - слева от текста.
- Right - справа от текста.
Q.imagePlacement = ImagePlacementIds.Right;
allowedAttachmentsType
Тип вложения, которое можно прикрепить к вопросу (если включён соответствующий флаг). Принимает свойства объекта AttachmentTypeIds:
- Image - изображение,
- Document - документ,
- Any - любой поддерживаемый.
Пример:
Q.allowedAttachmentsType = AttachmentTypeIds.Image;
minAttachmentsCount
maxAttachmentsCount
Минимальное и максимальное количество файлов, которые нужно прикрепить к вопросу:
- min = undefined, max = undefined - требуется 1 файл
- min = x, max = undefined - требуется x
- min = undefined, max = y - требуется от 0 до y
- min = x, max = y - требуется от x до y
attachmentsCount
Содержит количество прикреплённых к вопросу файлов. Только для чтения.
latitude
longitude
Широта и долгота, определённые по GPS, места, где показан вопрос. Только для чтения.
address
Адрес, определённый по GPS-координатам, места, где показан вопрос. Только для чтения.
autoAnswerSec
Время в секундах, через которое нужно автоматически нажать кнопку Далее — ограничить время отображения вопроса на экране. При этом не в информационном вопросе должен быть включён флаг Проверка ответа скриптами либо указан код ответа (для вопросов с выбором).
autoAnswerCode
Код ответа, который нужно выбрать автоматически в вопросе с выбором, если включён автоответ (см. выше).
answerNumberFrom
Минимальное значение, которое требуется ввести в числовом вопросе.
answerNumberTo
Максимальное значение, которое требуется ввести в числовом вопросе, а в вопросе Рейтинг — максимальная оценка.
icon
Иконка вопроса Рейтинг. Принимает свойства объекта IconType:
- Star — звезда,
- Smile — смайл,
- Heart — сердце,
- ThumbsUp — палец вверх (отлично).
Пример:
Q1.icon = IconType.Smile;
leftTitle
rightTitle
Левая и правая подпись шкалы в вопросах с типом Рейтинг, Слайдер и их табличных вариантов Таблица: Рейтинг, Таблица: Слайдер
Q.leftTitle = 'Не нравится';
Q.rightTitle = 'Очень нравится';
leftTitleLocalizations
rightTitleLocalizations
Левая и правая подпись шкалы на указанном языке в вопросах с типом Рейтинг, Слайдер и их табличных вариантов Таблица: Рейтинг, Таблица: Слайдер. Язык задаётся с помощью объекта Language.
Q.leftTitleLocalizations[Language.ru] = 'Не нравится';
Q.rightTitleLocalizations[Language.ru] = 'Очень нравится';
sourceAnswerCode
Для вопросов внутри цикла - код варианта ответа по которому создан (задаётся) этот вопрос цикла.
if (Q.sourceAnswerCode == 1) Q.hideFromTo(1, 5); // если вопрос задаётся по ответу с кодом 1 - скрыть ответы с 1 по 5
sourceQuestionNumber
Для вопросов внутри цикла - исходный номер вопроса из которого создан этот вопрос цикла.
if (Q.sourceQuestionNumber == 10 || Q.sourceQuestionNumber == 11) { // для вопросов 10 & 11 расположенный в цикле
let condition = Q9.isChecked(1); // дополнительное условие - в Q9 должен быть отмечен 1
return condition ? ok : skip; // условие выполняется ? задать : иначе пропустить
}
currentIterationQuestions
Для вопросов внутри цикла - ссылки на другие вопросы находящиеся в этой же итерации цикла. Ключом будет номер исходного вопроса.
Пример:
В Q1 ответы с кодами 1, 2, 3.
По ответам из Q1 повторяются вопросы с Q2 по Q4 (цикл): questions.repeat(1, 2, 4);
В вопросе Q3 можно получить ссылки на соседние вопросы Q2 и Q4 которые задаются по такому же коду ответа (в этой же итерации):
let q2 = Q.currentIterationQuestions[2]; // вопрос Q2 в этой итерации
if (q2.isChecked(1)) return skip; // если в вопросе Q2 был выбран ответ 1 - пропустить вопрос
answersSumControlMode
Режим контроля суммы вопроса Таблица: числа. Задаётся с помощью свойств объекта AnswersSumControlMode:
- Exactly — строго равно
- AtMost — не более
- AtLeast — не менее
Пример:
Q.answersSumControlMode = AnswersSumControlMode.AtMost;
answersSumControlTarget
Значение суммы при контроле в вопросе Таблица: числа. Пример:
Q.answersSumControlTarget = Q1.openValueNum;
answersSumControlUnit
Единицы измерения при контроле в вопросе Таблица: числа. Задаётся с помощью свойств объекта AnswersSumControlUnit:
- None — не задано
- Percent — проценты
- Pieces — штуки
- Milliliter — миллилитры
- Liter — литры
- Gram — граммы
- Kilogram — киллограммы
Пример:
Q.answersSumControlMode = AnswersSumControlUnit.Percent;
getClickedRegionCodes()
Для вопроса Клик-тест: Изображение
Возвращает массив с кодами выбранных зон в вопросе.
Q.getClickedRegionCodes();
Q1.getClickedRegionCodes();
hideRegionsWithCodes([code, codes])
Для вопроса Клик-тест: Изображение
Скрывает зону с указанным кодом (кодами). Принимает в качестве аргумента код или массив с кодами, которые необходимо скрыть.
Q.hideRegionsWithCodes(1);
Q1.hideRegionsWithCodes([2, 3]);
showRegionsWithCodes([code, codes])
Для вопроса Клик-тест: Изображение
Показывает зону с указанным кодом (кодами). Принимает в качестве аргумента код или массив с кодами, которые необходимо показать.
Q.showRegionsWithCodes(1);
Q1.showRegionsWithCodes([2, 3]);
hasClickByRegion(code)
Для вопроса Клик-тест: Изображение
Возвращает true, если был клик по зоне с указанны с кодом code.
if (Q.hasClickByRegion(1)) { // если был клик по зоне с кодом 1
// ...
}