获取 API
API 由ll-quiz-init 事件通过 event.detail.llQuizApi 提供给你。保存这个对象,需要时随时使用。
你的脚本可以在测验加载之前或之后运行。如果脚本注册得较晚,
ll-quiz-init 会自动向它重放,因此这种写法始终有效。llQuizApi,因此你也可以在某个步骤显示或某个答案变化时立即响应并执行操作。参见测验事件。
按名称引用步骤和区块
所有接受步骤或区块参数的函数都支持名称或 ID。名称就是你在构建器中输入的内容,因此通常使用名称即可。ID 是自动生成的,形如block-3f9c…。
读取答案
getAnswers() 返回目前为止给出的所有答案,每个区块一条。getAnswersSimple() 以标签为键的简单对象返回相同的答案。隐藏区块和空答案不包含在内。
fields 和 fieldsSimple 完全一致,因此处理其中一种的代码也能处理另一种。
了解访客所在位置
index 从 0 开始。本次访问提交测验后,isSubmitted 会变为 true。
查找区块
列表只包含可存储值的区块,标题、段落、图片等永远不会被列出。
getBlock() 还能找到按钮(Continue、Previous、Submit、Button),因此你可以修改按钮文字或禁用按钮。
哪些区块可以存储值?
哪些区块可以存储值?
输入字段(文本、邮箱、电话、数字、多行文本、日期、出生日期、邮编、地址、OTP)、选项类区块(多项选择、图片选择、下拉选择)、复选框、范围滑块、上传、签名和隐藏字段。其他区块都用于展示或导航:标题、段落、图片、视频、分隔线、列表、加载器、倒计时、进度条、折叠面板、链接、自定义代码、跟踪,以及各类按钮。对这些区块调用
getValue()、setValue()、reset() 或 validate() 会抛出错误。容器是透明的:容器内的区块会像其他区块一样被列出。读取和修改区块
你获取到的每个区块都是同一类对象,因此下面的示例适用于任何支持该调用的区块。值
ll-quiz-value-change,并带有 source: 'api',因此你的监听器可以将其与访客输入区分开。
各区块的值格式
各区块的值格式
- 复选框:
'checked'或'unchecked' - 多项选择、图片选择、下拉选择:所选选项的值,例如
'pro' - 可多选的多项选择:用区块上配置的分隔符连接起来的多个值
- 其他所有区块:访客输入的文本
标签和占位符
setLabel() 和 getLabel() 会抛出错误。
选项
多项选择、图片选择和下拉选择区块会公开其选项: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 会在上述所有操作完成后 resolve。
实用示例
从 URL 预填
从 URL 预填
显示自定义进度文本
显示自定义进度文本
跳转到第一个出错的字段
跳转到第一个出错的字段
在你自己的检查通过之前锁定 Continue 按钮
在你自己的检查通过之前锁定 Continue 按钮
仅在选择特定答案时显示某个区块
仅在选择特定答案时显示某个区块
通过你自己的按钮提交
通过你自己的按钮提交
将答案发送到你自己的端点
将答案发送到你自己的端点
函数一览
旧版函数名(仍受支持)
旧版函数名(仍受支持)
早期版本为每种查找方式提供了单独的函数。它们仍会和以前完全一样地工作,因此你已经写好的代码无需修改。新代码应使用统一的函数。