错误阻断逻辑
通过block ... with ...可以为题目或填空声明自定义校验规则。当条件成立时,答题页会直接展示错误提示,并阻止当前答案继续通过校验。
注意事项
block适合表达“答案不合法”的规则,不适合做显示隐藏或跳题block可以作用在题目本身,也可以作用在某个填空项上- 错误文案支持固定文本,也支持拼接其他题目的答案或稳定函数结果
- 当前支持在错误文案中使用题目答案、
LANG()、PARAMS() - 像
RANDBETWEEN()这类非稳定随机函数,不建议用于错误文案
基础用法
最常见的用法是对当前题增加一条范围或格式限制,条件满足时直接报错。
例子
Q1. 您的年龄是?【单行文本题】Q1
自定义逻辑
if Q1 > 120 then block Q1 with "年龄不能大于120岁"
if Q1 < 0 then block Q1 with "年龄不能小于0岁"
效果
当答题者在Q1中输入不合法的数值时,Q1会立即展示对应的错误提示,且该答案不能通过校验。
跨题联合校验
block可以引用其他题目的答案,实现跨题一致性校验。
例子
Q1. 您的预算上限是?【单行文本题】Q1
Q2. 您本次计划消费金额是?【单行文本题】Q2
自定义逻辑
if Q2 > Q1 then block Q2 with "计划消费金额不能超过预算上限"
效果
当Q2填写的金额大于Q1时,Q2会显示错误,提醒答题者修正。
动态错误文案
错误文案支持拼接其他题目的答案,这样可以把限制值直接展示给答题者。
自定义逻辑
if Q2 > Q1 then block Q2 with "计划消费金额不能超过" + Q1
如果Q1填写的是500,那么报错文案会显示为“计划消费金额不能超过500”。
使用自定义参数或语言生成文案
错误文案也支持PARAMS()和LANG(),可以做个性化提示。
自定义逻辑
if Q1 > 3 then block Q1 with PARAMS("user_name") + ",本题最多只能填3"
if LANG() == "en" and Q1 > 3 then block Q1 with "Maximum allowed value is 3"
阻断填空题中的某个填空项
如果要把错误提示精确显示在某个填空上,可以把block目标写成填空项。
例子
Q1. 请填写收货信息【填空题】Q1
- 姓名
Q1B1 - 手机号
Q1B2
自定义逻辑
if Q1B2 and len Q1B2 < 11 then block Q1B2 with "手机号长度不能少于11位"
效果
当手机号填空长度不足时,错误会直接挂在该填空项上,而不是整道题统一报错。
推荐写法
# 题目级错误
if Q2 > Q1 then block Q2 with "当前答案不能大于" + Q1
# 填空级错误
if Q1B2 and len Q1B2 < 11 then block Q1B2 with "手机号长度不能少于11位"
适用场景
- 约束数值上下限,例如年龄、金额、数量
- 做跨题一致性校验,例如实付金额不能大于预算
- 精确限制填空项或矩阵单元格的输入内容
- 结合
PARAMS()输出更贴近业务场景的错误提示