Как получить API
API передаётся вам в событииll-quiz-init как event.detail.llQuizApi. Сохраните этот объект и используйте его, когда нужно.
Ваш скрипт может выполниться до или после загрузки квиза. Если он зарегистрируется поздно, событие
ll-quiz-init автоматически отправится ему повторно, поэтому такой подход работает всегда.llQuizApi, поэтому вы можете реагировать на шаг или ответ и действовать прямо в обработчике. См. События квиза.
Шаги и блоки по имени
Каждая функция, принимающая шаг или блок, принимает его имя или ID. Имя — это то, что вы ввели в конструкторе, поэтому обычно используют его. ID генерируются автоматически и выглядят какblock-3f9c….
Чтение ответов
getAnswers() возвращает все данные на данный момент ответы — по одной записи на блок. getAnswersSimple() возвращает те же ответы в виде простого объекта, ключами которого служат метки (label). Скрытые блоки и пустые ответы не включаются.
fields и fieldsSimple, которые передают события, поэтому код, обрабатывающий одно, подойдёт и для другого.
Где находится посетитель
index начинается с 0. isSubmitted становится true, когда в этом визите квиз был отправлен.
Поиск блоков
В списки попадают только блоки, которые хранят значение. Заголовки, абзацы, изображения и подобные блоки в списки не входят.
getBlock() дополнительно находит кнопки (Continue, Previous, Submit, Button), чтобы вы могли менять их текст или отключать их.
Какие блоки хранят значение?
Какие блоки хранят значение?
Поля ввода (текст, email, телефон, число, textarea, дата, дата рождения, почтовый индекс, адрес, OTP), блоки выбора (multiple choice, image choice, select), checkbox, range slider, upload, signature и скрытые поля.Всё остальное — блоки отображения или навигации: заголовок, абзац, изображение, видео, разделитель, список, loader, countdown, progress, accordion, ссылки, custom code, tracking и кнопки. Вызов
getValue(), setValue(), reset() или validate() на таких блоках вызывает ошибку. Контейнеры прозрачны: блоки внутри них перечисляются так же, как любые другие.Чтение и изменение блока
Каждый блок, который вы получаете, — объект одного и того же типа, поэтому примеры ниже работают с любым блоком, который поддерживает вызов.Значение
ll-quiz-value-change с source: 'api', поэтому ваши обработчики могут отличить его от ввода посетителя.
Форматы значений по блокам
Форматы значений по блокам
- Checkbox:
'checked'или'unchecked' - Multiple choice, image choice, select: значение варианта, например
'pro' - Multiple choice с несколькими вариантами: значения, соединённые разделителем, заданным в блоке
- Все остальные: текст, который ввёл посетитель
Метка и плейсхолдер
setLabel() и getLabel() вызывают ошибку на блоках, у которых нет метки.
Варианты ответов
Блоки multiple choice, image choice и select предоставляют свои варианты:getOptions() на любом другом блоке вызывает ошибку.
Ошибки и фокус
Кнопки
enable() и disable() работают с блоками Continue, Submit и Button; на остальных вызывают ошибку.
Видимость
undefined означает, что вы ничего не меняли, поэтому блок следует собственным настройкам.
Валидация
Если шаг не проходит проверку, квиз также вызывает
ll-quiz-validation-error со всеми непрошедшими блоками и сообщениями об ошибках, помеченное source: 'api'. Поэтому один обработчик может обрабатывать и попытки посетителя, и ваши. Подробнее — на странице событий.Навигация и отправка
goNext(), goToStep() и submit() сначала валидируют шаг на экране. Если он невалиден, они остаются на месте, пишут предупреждение и вызывают ll-quiz-validation-error. goBack() никогда не валидирует.
submit() делает ровно то же, что кнопка Submit у посетителя: лид сохраняется, срабатывает ll-quiz-submit с ответом сервера, действует защита от повторной отправки и выполняется действие кнопки Submit после отправки. На шаге без кнопки Submit квиз отправляется и остаётся на месте. Возвращаемый promise завершается, когда всё это выполнено.
Примеры
Предзаполнение из URL
Предзаполнение из URL
Свой текст прогресса
Свой текст прогресса
Переход к первому полю с ошибкой
Переход к первому полю с ошибкой
Блокировка кнопки Continue, пока не пройдёт ваша проверка
Блокировка кнопки Continue, пока не пройдёт ваша проверка
Показ блока только при определённом ответе
Показ блока только при определённом ответе
Отправка по своей кнопке
Отправка по своей кнопке
Отправка ответов на свой эндпоинт
Отправка ответов на свой эндпоинт
Все функции кратко
Старые названия функций (по-прежнему поддерживаются)
Старые названия функций (по-прежнему поддерживаются)
В ранних версиях для каждого типа поиска была отдельная функция. Они продолжают работать как раньше, поэтому уже написанный код менять не нужно. В новом коде используйте унифицированные функции.